Introducción
SSH (Secure Shell) es un protocolo de red que permite acceder de forma segura a otro equipo mediante una conexión cifrada. En entornos Linux, el comando ssh se convierte en la herramienta predeterminada para administrar servidores, transferir archivos y ejecutar comandos remotamente sin exponer credenciales en texto plano. Este artículo explica paso a paso cómo usar ssh, desde la instalación hasta configuraciones avanzadas como túneles y autenticación con claves públicas.
¿Qué es SSH?
SSH sustituye a herramientas antiguas como telnet y rsh, que enviaban información sin cifrado. Utiliza criptografía de clave pública para autenticar el servidor y, opcionalmente, al cliente. Todo el tráfico, incluyendo contraseñas y datos, viaja dentro de un canal seguro protegido contra escuchas y manipulación. Además, SSH permite reenviar puertos y crear túneles que pueden encapsular otros protocolos de forma segura.
Instalación y verificación
En la mayoría de distribuciones Linux, el cliente ssh ya viene instalado. Para confirmarlo, ejecute ssh -V en la terminal; debería mostrar la versión de OpenSSH. Si falta, instálelo con el gestor de paquetes: en Debian/Ubuntu use sudo apt-get install openssh-client, en Fedora sudo dnf install openssh-clients y en Arch sudo pacman -S openssh. El servidor, necesario si desea aceptar conexiones, se instala con openssh-server.
Sintaxis básica
La forma más simple de conectarse es ssh usuario@host. Si el nombre de usuario en la máquina remota coincide con el local, puede omitirlo: ssh host. Por defecto, ssh usa el puerto 22; para especificar otro, agregue la opción -p puerto. Por ejemplo, ssh -p 2222 admin@ejemplo.com se conecta al puerto 2222.
Opciones más usadas
-p puerto: define el puerto de conexión.-i archivo_clave: indica la clave privada a usar para autenticación.-v: modo verboso, útil para depurar problemas de conexión.-C: habilita compresión de datos, beneficioso en enlaces lentos.-X: reenvío de X11 para ejecutar aplicaciones gráficas remotamente.
Conexión sin contraseña con claves públicas
Para evitar escribir la contraseña cada vez, genere un par de claves con ssh-keygen -t rsa -b 4096. Copie la clave pública al servidor usando ssh-copy-id usuario@host o añadiéndola manualmente a ~/.ssh/authorized_keys. Después, pruebe el acceso con ssh usuario@host; debería entrar sin solicitar contraseña. Puede proteger su clave privada con una frase de paso para aumentar la seguridad.
Túneles y reenvío de puertos
SSH puede crear túneles que cifran tráfico de otras aplicaciones. Un túnel local se crea con ssh -L puerto_local:destino:puerto_destino usuario@host. Por ejemplo, ssh -L 8080:localhost:80 usuario@host redirige el puerto 8080 de su máquina al puerto 80 del servidor, permitiendo acceder a un servicio web interno de forma segura. El reenvío remoto (-R) hace lo contrario, exponiendo un puerto local al servidor.
Buenas prácticas de seguridad
- Desactive la autenticación por contraseña en el servidor estableciendo
PasswordAuthentication noen/etc/ssh/sshd_configy recargue el daemon. - Limite los usuarios que pueden acceder mediante
AllowUsersoDenyUsers. - Cambie el puerto predeterminado a uno no estándar para reducir ataques automatizados.
- Use siempre versiones recientes de OpenSSH y aplique actualizaciones de seguridad.
- Monitoree los intentos de conexión con herramientas como
fail2bano revisando/var/log/auth.log.
Conclusión
El comando ssh es una pieza fundamental para la administración segura de sistemas Linux. Dominar su sintaxis, opciones y técnicas avanzadas como autenticación con claves y túneles le brinda la capacidad de gestionar infraestructuras remotas con confianza y sin comprometer la seguridad. Aplicar las buenas prácticas descritas garantiza que sus conexiones permanezcan protegidas frente a amenazas externas.