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 confías 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, o quieres sincronizar carpetas completas transfiriendo solo los cambios:
rsync -avz carpeta/ usuario@servidor:/ruta/
Con la opción --ignore-existing, rsync solo copiará archivos que aún no existan en el destino:
rsync -avz --ignore-existing usuario@servidor:/ruta/ ./
Montar directorios remotos con sshfs
sshfs permite montar un directorio remoto como si fuera una carpeta local, usando SSH como transporte. La ventaja respecto a scp o rsync es que no tienes que transferir archivos manualmente: cualquier herramienta local —tu editor, el gestor de archivos— trabaja directamente contra el servidor.
Instalación:
sudo apt install sshfs
Crear el punto de montaje y montar:
mkdir -p ~/servidor_web
sshfs usuario@servidor.com:/var/www/html ~/servidor_web
Si tienes configurado un alias en ~/.ssh/config (por ejemplo Host web), puedes abreviarlo:
sshfs web:/var/www/html ~/servidor_web
A partir de ese momento ~/servidor_web muestra el contenido del servidor. Puedes abrir el proyecto en tu editor y guardar los cambios directamente; el archivo se actualiza en el servidor en el momento de guardar, sin pasos intermedios.
Para desmontar cuando termines:
fusermount -u ~/servidor_web # Linux
umount ~/servidor_web # macOS
En conexiones inestables es útil activar la reconexión automática:
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 \
usuario@servidor.com:/var/www/html ~/servidor_web
Nota: sshfs depende de FUSE (Filesystem in Userspace), que viene instalado en la mayoría de distribuciones Linux modernas. En macOS requiere instalar macFUSE primero.
Alias y accesos personalizados
Puedes crear alias en tu terminal para conexiones y montajes habituales:
alias conectarweb='ssh web'
alias montarweb='sshfs web:/var/www/html ~/servidor_web'
alias desmontarweb='fusermount -u ~/servidor_web'
Añade estos alias a tu ~/.bashrc o ~/.zshrc para que estén disponibles en cada sesión.
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.
En la próxima lección: Transferencia de archivos: protocolos FTP, SFTP y FTPS, clientes y comandos desde la terminal.