[Remoto] Conexión por ssh mediante MAC en la LAN
Se trata de conectarnos por ssh
a un equipo conociendo su MAC. Como ssh
necesita el parámetro de la dirección del equipo y no su MAC, he creado un script, siempre mejorable, para realizar esta función. Se ha probado en Debian 11 y 12.
- Fichero que contiene las direcciones MAC de los equipos del aula.
- mac13.txt
1301 04:92:26:d3:aa:f8 1302 64:51:06:60:0e:35 1303 4c:ed:fb:3f:0d:e6 1304 64:51:06:60:0e:3e 1305 04:92:26:c1:f3:c0 1306 64:51:06:51:07:c3 1307 e0:d5:5e:46:89:c5 1308 64:51:06:50:f5:ae 1309 04:92:26:c1:f3:b9 1310 64:51:06:50:f0:eb 1311 4c:ed:fb:3f:0f:67 1312 64:51:06:60:0e:3c 1313 04:92:26:d3:b1:d0 1314 64:51:06:5b:af:0d 1315 4c:ed:fb:3f:0f:01 1316 e0:d5:5e:46:8d:67 1317 4c:ed:fb:3f:0f:9a 1318 64:51:06:52:27:55 1319 e0:d5:5e:46:8d:33 1320 64:51:06:57:fb:ae 1321 e0:d5:5e:46:8d:6b 1322 64:51:06:52:40:65 1323 00:24:1d:c0:6a:6b 1324 00:18:8b:2b:24:00
- Script para conectar con un equipo del taller mediante ssh utilizando su MAC. Se usa el paquete
arp-scan
, previamente instalado, y debe ejecutarse con permisos deroot
. Instalar previamente arp-scan# aptitude install arp-scan
- conecta.sh
# Variables de entrada # - $1 el número del pc (1301..1324), debe tener 4 caracteres # - $2 es la letra del usuario (a,b,c) # ejemplo de llamada: # bash conecta.sh 1301 c clear # Nombre del hostname y red pc_num=$1 # comprobamos longitud de la cadena de entrada if [[ ${#pc_num} -ne 4 ]]; then echo Identificador del PC incorrecto: Debe contener 4 caracteres exit fi pc_nombre=pc$pc_num pc_red="192.168.113.0/24" # Buscar en archivo la mac del equipo, segundo campo de cada línea archivo="mac13.txt" pc_mac=$(grep $1 $archivo | awk '{print $2}') if [[ -z "$pc_mac" ]]; then echo "Identificador del PC no encontrado" exit fi # Busqueda de la IP de ese equipo echo Buscando en la red $pc_red la IP del equipo $pc_nombre con MAC $pc_mac... pc_ip=$(arp-scan $pc_red | grep $pc_mac | awk '{print $1}' | head -n1) if [[ -z "$pc_ip" ]]; then echo "PC no encontrado" exit fi # IP identificada, entrar por ssh en usuario... echo La IP del equipo $pc_nombre es $pc_ip echo Conectandose con usuario sti$1$2... ssh sti$1$2@$pc_ip
Se llama con
# bash conecta.sh XXXX Y
donde
XXXX
es el número que identifica el equipo: el primer campo de cada fila del fichero de texto que contienen las MAC. eY
es la letra del usuario a, b o c. Ejemplo:# bash conecta.sh 1301 a
Copia de un fichero mediante ssh
- Para copiar un fichero de un equipo a otro en Debian Linux utilizando la consola SSH, puedes usar el comando SCP (Secure Copy Protocol). SCP es una herramienta de línea de comandos que permite la transferencia segura de archivos entre sistemas locales y remotos utilizando el protocolo SSH.
- La sintaxis básica para copiar un archivo de un equipo a otro es la siguiente:
scp [opciones] archivo_origen usuario@servidor_destino:/ruta/destino
- Por ejemplo:
scp vbox_install_71.sh sti1301a@192.168.113.101:/home/sti1301a/
En este ejemplo:
documento.txt
es la ruta del archivo en el equipo de origen.sti1301a
es el nombre de usuario en el equipo de destino.192.168.113.101
es la dirección IP del equipo de destino./home/sti1301a/
es la ruta de destino en el equipo remoto.
- Al ejecutar ese comando, se pedirá la contraseña del usuario remoto para autenticar la conexión SSH.
Opciones útiles del comando SCP. Para mejorar la funcionalidad del comando SCP, puedes utilizar algunas opciones:
- -r: Copia directorios de manera recursiva. Útil para transferir carpetas completas.
- -P: Especifica un puerto SSH diferente al predeterminado 22.
- -C: Habilita la compresión de datos para acelerar la transferencia en conexiones lentas.
- -v: Proporciona información detallada sobre el proceso de transferencia.
- -l: Limita la velocidad de transferencia en kilobits por segundo.
- Ejemplo para copiar un directorio completo de forma recursiva
scp -r /directorio/local usuario_remoto@192.168.1.100:/directorio/remoto
Recomendaciones
- Si trabajas frecuentemente con el mismo servidor remoto, considera configurar claves SSH para evitar ingresar la contraseña en cada transferencia.
- Para transferencias de archivos grandes, usa la opción `-l` para limitar el ancho de banda y evitar saturar la red.
- Si necesitas copiar archivos entre dos servidores remotos, puedes ejecutar el comando SCP desde uno de los servidores involucrados.
- Asegúrate de tener los permisos necesarios tanto en el equipo de origen como en el de destino para realizar la transferencia.
Utilizando el comando SCP, podrás transferir archivos de manera segura y eficiente entre equipos Debian Linux a través de SSH, aprovechando la robustez y seguridad que ofrece este protocolo.