[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 de root. 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. e Y es la letra del usuario a, b o c. Ejemplo:

    # bash conecta.sh 1301 a
    


  • 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:

  1. -r: Copia directorios de manera recursiva. Útil para transferir carpetas completas.
  2. -P: Especifica un puerto SSH diferente al predeterminado 22.
  3. -C: Habilita la compresión de datos para acelerar la transferencia en conexiones lentas.
  4. -v: Proporciona información detallada sobre el proceso de transferencia.
  5. -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

  1. Si trabajas frecuentemente con el mismo servidor remoto, considera configurar claves SSH para evitar ingresar la contraseña en cada transferencia.
  2. Para transferencias de archivos grandes, usa la opción `-l` para limitar el ancho de banda y evitar saturar la red.
  3. Si necesitas copiar archivos entre dos servidores remotos, puedes ejecutar el comando SCP desde uno de los servidores involucrados.
  4. 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.


  • doc/tec/net/remoto/ssh_mac/inicio.txt
  • Última modificación: 2025/02/03 17:25
  • por euloxio