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/
scp usuario@servidor:/ruta/archivo.txt ./
-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.