Apuntes otros

Cajón Desastre: Todo lo que no encaja en ninguna parte.

Conexión remota con SSH

SSH (Secure Shell) es un protocolo que permite acceder de forma segura a un ordenador remoto a través de una red. Es la forma habitual de administrar servidores Linux a distancia desde la terminal.

Conexión básica

Para conectarte a un servidor remoto con SSH:

ssh usuario@servidor

Ejemplos:

ssh juan@192.168.1.100
ssh maria@midominio.com

Por defecto, SSH usa el puerto 22. Si el servidor utiliza otro puerto:

ssh -p 2222 juan@midominio.com

Primera conexión: aviso de seguridad

La primera vez que te conectas a un servidor, se muestra un mensaje advirtiendo que no se ha verificado la identidad del host. Esto es normal y deberás escribir yes para continuar (evidentemente, si conoces y confias en el host).

Comandos útiles una vez conectado

Una vez dentro del servidor, puedes usar comandos como si estuvieras en una terminal local: navegar con cd, ver archivos con ls, editar con nano o vim, etc.

Para salir de la sesión SSH:

exit

Generar una clave SSH

Para evitar introducir la contraseña cada vez, puedes usar una clave pública. En tu ordenador local:

ssh-keygen

Esto genera dos archivos:

  • ~/.ssh/id_rsa: clave privada (no se debe compartir)
  • ~/.ssh/id_rsa.pub: clave pública

Al generar la clave con ssh-keygen, se te preguntará si deseas añadir una frase de seguridad. Puedes dejarla en blanco si prefieres conectarte sin tener que introducirla cada vez.

Si no deseas escribir tu frase de contraseña cada vez que usas tu clave privada:


        eval "$(ssh-agent -s)"
        ssh-add ~/.ssh/id_rsa

Esto agrega tu clave al agente SSH, que la mantendrá desbloqueada durante tu sesión.

Instalar la clave en el servidor

Para copiar la clave pública al servidor remoto:

ssh-copy-id usuario@servidor

Tras esto, podrás conectarte sin introducir contraseña (si la clave privada se mantiene segura).

Conexión usando archivo de configuración

Para simplificar los comandos puedes crear o editar el archivo ~/.ssh/config:


Host web
  HostName midominio.com
  User juan
  Port 22
  IdentityFile ~/.ssh/id_rsa

Después de eso puedes conectarte simplemente escribiendo:

ssh web

Copiar archivos con SSH

SSH permite copiar archivos usando el comando scp. Es similar al comando cp, pero para ordenadores remotos:

  • Subir un archivo local al servidor:
  • scp archivo.txt usuario@servidor:/ruta/destino/
  • Descargar un archivo del servidor al equipo local:
  • scp usuario@servidor:/ruta/archivo.txt ./
  • Copiar carpetas completas con -r:
  • scp -r carpeta usuario@servidor:/ruta/

Comandos remotos

Puedes ejecutar comandos directamente sin iniciar sesión interactiva:

ssh usuario@servidor 'uptime'

Esto es útil para automatización y scripts.

Sincronizar archivos con rsync sobre SSH

Una alternativa más eficiente a scp es rsync. Es útil cuando transfieres archivos grandes o repetidos:

rsync -avz -e ssh archivo.txt usuario@servidor:/ruta/destino/

Para sincronizar una carpeta completa:

rsync -avz -e ssh carpeta/ usuario@servidor:/ruta/

Alias y accesos personalizados

Además de configurar el archivo ~/.ssh/config, puedes crear alias en tu terminal para conexiones rápidas:

alias conectarweb='ssh web'

Esto se puede añadir a tu ~/.bashrc, ~/.zshrc u otro archivo de configuración de tu terminal.

Transferencia desde el servidor sin sobrescribir

Al usar scp o rsync, puedes evitar sobrescribir archivos existentes añadiendo opciones como:

rsync -avz --ignore-existing -e ssh usuario@servidor:/ruta/ ./

Esto solo copiará archivos que aún no existan localmente.

Consejos de seguridad

  • No compartas nunca tu clave privada.
  • Admite autenticación solo por clave si administras el servidor (editando sshd_config).
  • Desactiva el acceso root por SSH si no es necesario.
  • Usa un puerto no estándar si quieres reducir intentos de conexión automáticos (por ejemplo, el 2222 en vez del 22).

Notas

  • SSH está disponible por defecto en Linux y macOS.
  • En Windows puedes usar PowerShell o el terminal con OpenSSH, o herramientas como PuTTY o MobaXterm.
TOP