Guía para usar SSH en Linux: Conexión y seguridad
¿Qué es SSH y por qué lo necesitas?
SSH (Secure Shell) es un protocolo de red que te permite conectarte de forma segura a un servidor Linux remoto, como si estuvieras sentado frente a él. Piensa en él como una puerta blindada hacia tu servidor: todo lo que viaja entre tu ordenador y el servidor va cifrado, lo que significa que nadie puede espiar tus contraseñas, comandos o datos mientras se transmiten.
Para cualquier persona que gestione un sitio web, un servidor o simplemente quiera administrar un sistema Linux a distancia, ssh linux es una herramienta imprescindible. Sin SSH, estarías enviando información sensible en texto plano, algo tan peligroso como enviar una postal con tu contraseña escrita.
En esta guía te enseñaremos desde cero cómo conectar por ssh, cómo configurar las claves ssh para una autenticación más segura y rápida, y qué medidas debes tomar para blindar tu servidor con una buena seguridad ssh.
Requisitos previos para usar SSH en Linux
Antes de empezar, asegúrate de tener lo siguiente:
- Un servidor Linux (puede ser un VPS, un servidor dedicado o incluso un equipo local con Linux).
- Un ordenador cliente con Linux, macOS o Windows 10/11 (en Windows puedes usar PowerShell o la terminal de Windows).
- Dirección IP o nombre de dominio del servidor.
- Credenciales de acceso (usuario y contraseña, o una clave pública que hayas configurado previamente).
Si estás usando un panel de control como Syspanel (antes conocido como HestiaCP), ten en cuenta que el acceso SSH se gestiona desde el servidor, no desde el panel. El panel usa el puerto 2106 para su interfaz web, pero SSH por defecto usa el puerto 22, aunque esto puede cambiarse por seguridad.
Cómo conectarse por SSH desde Linux (paso a paso)
1. Abre tu terminal
En la mayoría de distribuciones Linux, puedes abrir la terminal con el atajo Ctrl + Alt + T. En macOS, busca "Terminal" en Launchpad. En Windows, abre PowerShell o la Terminal de Windows.
2. Usa el comando SSH básico
El comando básico tiene esta estructura:
ssh usuario@direccion_ip
Por ejemplo, si tu usuario es root y la IP es 192.168.1.100, escribirías:
ssh root@192.168.1.100
Si es la primera vez que te conectas a ese servidor, verás un mensaje como este:
The authenticity of host '192.168.1.100' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)?
Escribe yes y pulsa Enter. Esto guarda la huella del servidor en tu archivo known_hosts para futuras conexiones.
3. Introduce tu contraseña
A continuación, el sistema te pedirá la contraseña del usuario. Escríbela y pulsa Enter. No verás los caracteres mientras escribes, es normal, es una medida de seguridad.
4. ¡Ya estás dentro!
Si todo ha ido bien, verás el prompt del servidor, algo como root@servidor:~# o usuario@servidor:~$. A partir de aquí, puedes ejecutar comandos como si estuvieras físicamente en el servidor.
5. Salir de la sesión SSH
Para cerrar la conexión, escribe exit y pulsa Enter, o usa el atajo Ctrl + D.
Conectar por SSH con un puerto personalizado
Por defecto, SSH usa el puerto 22. Sin embargo, muchos administradores cambian este puerto para evitar ataques automatizados. Si tu servidor usa un puerto distinto, indica el puerto con la opción -p:
ssh -p 2222 usuario@direccion_ip
Por ejemplo, si tu servidor escucha en el puerto 2222, el comando sería:
ssh -p 2222 admin@midominio.com
[INFO] Si usas Syspanel, recuerda que el acceso web al panel es por el puerto 2106, pero esto no tiene relación con el puerto de SSH. El puerto SSH se configura en el archivo /etc/ssh/sshd_config.
Claves SSH: la forma más segura y cómoda de autenticarse
Las contraseñas son cómodas, pero tienen un problema: pueden ser adivinadas, robadas o interceptadas. Las claves ssh resuelven esto usando un par de llaves criptográficas: una pública (que se coloca en el servidor) y una privada (que se guarda en tu ordenador). La clave privada nunca viaja por la red, así que es prácticamente imposible de interceptar.
1. Genera un par de claves SSH
En tu ordenador local, ejecuta:
ssh-keygen -t ed25519 -C "tu_correo@ejemplo.com"
También puedes usar RSA si tu sistema es antiguo:
ssh-keygen -t rsa -b 4096 -C "tu_correo@ejemplo.com"
El parámetro -C es solo un comentario para identificar la clave, no es obligatorio.
2. Sigue las indicaciones
El sistema te preguntará dónde guardar la clave. La ruta por defecto es ~/.ssh/id_ed25519 (o id_rsa). Pulsa Enter para aceptarla.
Luego te pedirá una frase de contraseña (passphrase). Aquí tienes dos opciones:
- Déjala vacía (pulsa Enter dos veces): más cómodo, pero si alguien roba tu clave privada, podrá usarla sin restricciones.
- Pon una frase larga y única: más seguro, te la pedirá cada vez que uses la clave.
[TIP] Siempre es recomendable usar una frase de contraseña. Si te preocupa la comodidad, puedes usar un agente SSH (ssh-agent) para no tener que escribirla constantemente.
3. Copia la clave pública al servidor
Ahora necesitas colocar tu clave pública en el servidor. La forma más sencilla es usar ssh-copy-id:
ssh-copy-id usuario@direccion_ip
Este comando te pedirá tu contraseña actual (la del servidor) y copiará automáticamente la clave pública al archivo ~/.ssh/authorized_keys del servidor.
Si ssh-copy-id no está disponible, puedes hacerlo manualmente:
cat ~/.ssh/id_ed25519.pub | ssh usuario@direccion_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
4. Conecta sin contraseña
A partir de ahora, cuando te conectes por SSH, el servidor reconocerá tu clave y no te pedirá contraseña (solo la frase de contraseña de tu clave privada, si la has puesto).
Seguridad SSH: buenas prácticas imprescindibles
La seguridad ssh no es opcional si tu servidor está expuesto a internet. Cada día, bots automatizados intentan conectarse a servidores SSH con combinaciones de usuario/contraseña comunes. Aquí tienes una lista de medidas para blindar tu servidor.
1. Desactiva el acceso root por SSH
El usuario root tiene privilegios totales, y es el principal objetivo de los atacantes. Es mucho más seguro crear un usuario normal y usar sudo para tareas administrativas.
Para desactivar el acceso root, edita el archivo de configuración:
sudo nano /etc/ssh/sshd_config
Busca la línea PermitRootLogin y cámbiala a:
PermitRootLogin no
Luego reinicia el servicio:
sudo systemctl restart sshd
2. Usa autenticación por claves y desactiva la contraseña
Una vez que hayas configurado las claves ssh, puedes desactivar la autenticación por contraseña. Esto hace que sea casi imposible que alguien entre sin tu clave privada.
En el mismo archivo sshd_config, busca:
PasswordAuthentication yes
y cámbialo a:
PasswordAuthentication no
[WARNING] Antes de hacer esto, asegúrate de que las claves funcionan correctamente. Si te equivocas y no tienes la clave bien configurada, podrías quedarte fuera de tu propio servidor. Siempre mantén una sesión SSH abierta mientras pruebas.
3. Cambia el puerto SSH por defecto
Cambiar el puerto 22 a otro número (por ejemplo, 2222) reduce drásticamente los ataques automatizados, ya que la mayoría de los bots solo escanean el puerto estándar.
Cambia la línea:
Port 22
por:
Port 2222
Y recuerda que a partir de ahora tendrás que especificar el puerto en cada conexión:
ssh -p 2222 usuario@servidor
4. Configura un cortafuegos (firewall)
Usa ufw (Uncomplicated Firewall) en Ubuntu/Debian para permitir solo el tráfico necesario:
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Si usas Syspanel, recuerda abrir también el puerto 2106 para acceder al panel web:
sudo ufw allow 2106/tcp
5. Usa Fail2ban para bloquear intentos fallidos
Fail2ban es una herramienta que monitorea los logs de SSH y bloquea automáticamente las IPs que hagan demasiados intentos fallidos.
Instálalo:
sudo apt install fail2ban
Configura una copia del archivo de configuración:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Edita el archivo jail.local y busca la sección [sshd]. Asegúrate de que esté activada:
[sshd]
enabled = true
maxretry = 5
bantime = 3600
Reinicia el servicio:
sudo systemctl restart fail2ban
6. Mantén el sistema actualizado
Las vulnerabilidades en OpenSSH aparecen de vez en cuando. Mantén tu sistema al día:
sudo apt update && sudo apt upgrade
Preguntas frecuentes (FAQ) sobre SSH en Linux
¿Qué hago si me olvidé la contraseña de mi servidor?
Si tienes acceso físico al servidor o acceso a un panel de control (como Syspanel), puedes resetear la contraseña desde ahí. Si el servidor es un VPS, muchos proveedores ofrecen un modo de rescate o la posibilidad de montar el disco para editar la configuración.
¿Cómo sé si SSH está corriendo en mi servidor?
Ejecuta:
sudo systemctl status sshd
Si no está activo, inícialo con:
sudo systemctl start sshd
¿Puedo usar SSH en Windows?
Sí, desde Windows 10 en adelante, PowerShell y la Terminal de Windows incluyen el cliente SSH nativo. Solo abre PowerShell y usa el mismo comando ssh.
¿Qué diferencia hay entre SSH y Telnet?
Telnet es el protocolo antiguo que envía todo en texto plano (sin cifrar). SSH lo reemplazó por su seguridad. Nunca uses Telnet para administrar un servidor remoto.
¿Cómo puedo copiar archivos usando SSH?
Puedes usar scp (secure copy) o rsync:
scp archivo.txt usuario@servidor:/ruta/destino/
Para copiar una carpeta completa:
scp -r carpeta_local/ usuario@servidor:/ruta/destino/
¿Qué es el archivo known_hosts?
Es un archivo que guarda las huellas digitales de los servidores a los que te has conectado. Si la huella de un servidor cambia (por ejemplo, si reinstalas el sistema), SSH te avisará para evitar ataques de intermediario.
¿Puedo usar SSH con Syspanel?
Sí, Syspanel no interfiere con SSH. De hecho, te recomendamos usar SSH para tareas avanzadas que el panel no permite. Recuerda que el acceso al panel es por el puerto 2106, pero SSH usa su propio puerto (normalmente 22 o el que hayas configurado).
Conclusión y siguientes pasos
Dominar ssh linux es una habilidad fundamental para cualquier administrador de sistemas o desarrollador web. Con lo que has aprendido hoy, ya puedes:
- Conectar por ssh a tu servidor desde cualquier lugar.
- Configurar claves ssh para una autenticación segura y sin contraseñas.
- Aplicar medidas básicas de seguridad ssh para proteger tu servidor de ataques.
La seguridad es un proceso continuo. Te recomendamos revisar periódicamente los logs de autenticación (/var/log/auth.log) y mantener tus sistemas actualizados. Si usas Syspanel, combina la comodidad del panel con el control total que te da SSH para tareas avanzadas.
[TIP] Si quieres llevar tu seguridad al siguiente nivel, investiga sobre autenticación de dos factores (2FA) para SSH, configuraciones de sshd_config más restrictivas y el uso de túneles SSH para cifrar otros protocolos.
Ahora que ya sabes lo básico, ¡anímate a explorar! Crea usuarios, automatiza tareas con scripts, monta túneles SSH... Las posibilidades son infinitas. Y recuerda: con un buen uso de SSH, tu servidor estará tan seguro como una fortaleza medieval, pero mucho más fácil de administrar.
