Apuntes sobre Otras cosas

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 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.

TOP