Cómo usar SSH en Linux para principiantes
¡Perfecto! Prepárate para convertirte en un maestro del control remoto. Vamos a desglosar el mundo de SSH, paso a paso, sin tecnicismos innecesarios. Al final de esta guía, podrás conectarte a tu servidor con la confianza de un profesional.
¿Qué es SSH y Por Qué lo Necesitas?
Imagina que tu servidor (o tu ordenador de casa) es una nave espacial. Para pilotarla, no te basta con mirarla desde fuera; necesitas una consola de mando. SSH (Secure Shell) es exactamente eso: tu consola de mando remota y segura.
En términos simples, SSH es un protocolo de red que te permite conectar ssh a otro equipo y ejecutar comandos como si estuvieras sentado delante de él. La parte de "Secure" (Seguro) es crucial: toda la información que viaja entre tu ordenador y el servidor está cifrada. Esto significa que si alguien intercepta la comunicación, solo verá un galimatías incomprensible, no tus contraseñas o datos.
Para un principiante, SSH es la puerta de entrada a la administración de servidores. Ya sea para instalar software, configurar un sitio web o simplemente explorar el sistema, dominar los comandos ssh básicos es el primer y más importante paso.
Requisitos Previos: Lo que Necesitas para Empezar
Antes de sumergirnos en los comandos, asegurémonos de que tienes las herramientas adecuadas. No te preocupes, son pocas y fáciles de conseguir.
1. Un Servidor o Equipo Remoto
Necesitas un equipo al que conectarte. Puede ser un VPS (Servidor Virtual Privado) contratado a un proveedor de hosting, un servidor dedicado, o incluso otro ordenador en tu red local. Lo esencial es que tenga la dirección IP o el nombre de dominio, y que el servicio SSH esté activo (normalmente lo está por defecto en la mayoría de los sistemas Linux).
2. Credenciales de Acceso
Tendrás un nombre de usuario (a menudo root o un usuario específico que hayas creado) y una contraseña. Más adelante, te recomendaré encarecidamente usar claves SSH para una seguridad ssh linux mucho más robusta, pero por ahora, la contraseña es suficiente para empezar.
3. Un Cliente SSH
Esta es la aplicación que usas desde tu ordenador local para iniciar la conexión.
- En Linux y macOS: No necesitas instalar nada. El cliente SSH viene integrado en la terminal. Solo abre tu terminal y listo.
- En Windows: La cosa ha mejorado muchísimo. Ahora puedes usar PowerShell o la Terminal de Windows (Windows Terminal) que también incluyen SSH nativo. Otra opción muy popular es PuTTY, una aplicación gratuita y ligera.
Tu Primer Comando: La Conexión Inicial
Ahora viene la parte emocionante. Vamos a establecer nuestra primera conexión. Abre tu terminal y teclea el siguiente comando:
ssh nombre_de_usuario@direccion_ip_del_servidor
Vamos a desglosarlo:
ssh: El comando que inicia el protocolo.nombre_de_usuario: El usuario con el que quieres entrar en el servidor. Por ejemplo,rootoadmin.@: El símbolo que separa el usuario de la dirección.direccion_ip_del_servidor: La IP pública o privada de tu servidor. Por ejemplo,192.168.1.100o203.0.113.5.
Ejemplo práctico:
ssh admin@192.168.1.100
Al ejecutarlo, verás un mensaje como este la primera vez:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)?
Esto es normal. Tu ordenador te está preguntando si confías en el servidor al que te estás conectando. Escribe yes y presiona Enter.
A continuación, se te pedirá la contraseña. Escríbela (verás que no se muestra nada en pantalla, ni asteriscos; es una medida de seguridad) y presiona Enter.
¡Felicidades! Acabas de conectar ssh con éxito. Si todo ha ido bien, verás un mensaje de bienvenida y el prompt del servidor, algo como admin@servidor:~$. Ahora estás dentro de la nave.
[INFO] Si no ves el mensaje de autenticidad, puede que ya te hayas conectado antes o que tengas un archivo
known_hostsconfigurado. No te preocupes, es normal.
Navegando por el Sistema: Comandos Esenciales
Ya estás dentro. Ahora, ¿qué haces? La clave está en moverte y explorar. Aquí tienes tus primeros comandos infalibles:
Ver Dónde Estás y Qué Hay
pwd(print working directory): Te muestra la ruta completa del directorio en el que te encuentras. Es tu "GPS" personal. Por ejemplo,/home/admin.ls(list): Lista los archivos y carpetas del directorio actual. Es como abrir el explorador de archivos.ls -l: Muestra una lista detallada con permisos, propietario, tamaño y fecha.ls -a: Muestra también los archivos ocultos (los que empiezan por un punto.).ls -la: La combinación de ambos. Muy útil.
Cambiar de Directorio
cd(change directory): Te permite moverte entre carpetas.cd /ruta/de/la/carpeta: Te lleva directamente a esa ruta. Por ejemplo,cd /var/www/html.cd ..: Sube un nivel, al directorio padre.cd ~: Te lleva a tu directorio de usuario (home).cd /: Te lleva a la raíz del sistema.
Crear y Eliminar Archivos/Carpetas
touch nombre_archivo.txt: Crea un archivo vacío.mkdir nombre_carpeta: Crea una nueva carpeta (directorio).rm nombre_archivo.txt: Elimina un archivo.rm -r nombre_carpeta: Elimina una carpeta y todo su contenido. ¡Úsalo con mucho cuidado! No hay papelera.
cp archivo_origen archivo_destino: Copia un archivo o carpeta.mv archivo_origen archivo_destino: Mueve o renombra un archivo o carpeta.
Ver el Contenido de un Archivo
cat nombre_archivo.txt: Muestra todo el contenido del archivo en la terminal.less nombre_archivo.txt: Te permite ver el archivo página a página. Es perfecto para archivos largos. Presionaqpara salir.
Comandos de Sistema
whoami: Te dice qué usuario eres.sudo(superuser do): Ejecuta un comando con permisos de administrador (root). Es imprescindible para tareas de configuración. Por ejemplo,sudo apt update.apt updateyapt upgrade: (En sistemas basados en Debian/Ubuntu) Actualizan la lista de paquetes disponibles y luego actualizan los programas instalados. Es la base del mantenimiento.clear: Limpia la pantalla de la terminal.exit: Cierra la sesión SSH.
[TIP] No memorices todos los comandos de golpe. La práctica hace al maestro. Con estos 10 comandos ya puedes hacer el 90% de las tareas básicas.
Seguridad SSH en Linux: Blindando tu Conexión
Ahora que ya sabes manejarte, hablemos de la parte más crítica: la seguridad. Dejar tu servidor con contraseña es como dejar la llave puesta en la puerta de tu casa. Es hora de mejorar la cerradura.
1. Cambia el Puerto por Defecto
El puerto por defecto de SSH es el 22. Los atacantes lo saben y lo escanean constantemente. Cambiarlo a un número menos común (por ejemplo, el 2222 o el 2106, aunque este último es para Syspanel) reduce drásticamente los ataques automatizados.
Para ello, edita el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Busca la línea #Port 22, descoméntala (quita el #) y cambia el número. Guarda con Ctrl+O, Enter, y sal con Ctrl+X. Luego reinicia el servicio:
sudo systemctl restart ssh
[WARNING] Asegúrate de recordar el nuevo puerto. Si lo olvidas, no podrás conectarte. Y si usas un firewall, deberás abrir el nuevo puerto.
2. Usa Claves SSH (La Mejor Opción)
En lugar de una contraseña, puedes usar un par de llaves criptográficas. Una pública (que se queda en el servidor) y una privada (que se queda en tu ordenador). Es como tener una llave maestra que es imposible de adivinar.
Paso 1: Generar las llaves en tu ordenador local.
ssh-keygen -t ed25519 -C "tu_correo@ejemplo.com"
Te preguntará dónde guardarlas (la ruta por defecto está bien) y si quieres una frase de contraseña (passphrase) adicional. Si la pones, te la pedirá cada vez que uses la llave.
Paso 2: Copiar la llave pública al servidor.
ssh-copy-id nombre_de_usuario@direccion_ip_del_servidor
Te pedirá tu contraseña actual una última vez. Después, la llave se copiará automáticamente.
Paso 3: Deshabilitar el acceso por contraseña (Opcional pero muy recomendado).
Una vez que la llave funcione, puedes desactivar las contraseñas. Edita de nuevo /etc/ssh/sshd_config y busca la línea:
PasswordAuthentication yes
Cámbiala a:
PasswordAuthentication no
Reinicia el servicio SSH. A partir de ahora, solo podrás entrar con tu llave privada.
[INFO] Si no tienes
ssh-copy-id, puedes copiar la llave manualmente. El comandocat ~/.ssh/id_ed25519.pubmostrará tu llave pública. Cópiala, conéctate al servidor y pégala en el archivo~/.ssh/authorized_keys.
3. Desactiva el Acceso Root
Entrar directamente como root es peligroso. Es mejor usar un usuario normal y luego usar sudo para tareas administrativas. En /etc/ssh/sshd_config, busca PermitRootLogin y cámbialo a no.
4. Usa un Firewall (UFW)
Un firewall es un guardián que controla qué puertos están abiertos. Si usas Ubuntu, ufw es muy fácil de usar.
sudo ufw allow 22/tcp # O el puerto que hayas configurado
sudo ufw enable
Esto bloqueará todo el tráfico excepto el del puerto SSH. Puedes añadir más reglas, como sudo ufw allow 80/tcp para HTTP o sudo ufw allow 443/tcp para HTTPS.
Solución de Problemas Comunes (FAQ)
Incluso los expertos se enfrentan a problemas. Aquí tienes las soluciones a los más comunes:
"Connection refused" (Conexión rechazada)
Esto significa que el servidor no está escuchando en el puerto que intentas usar.
- Causa 1: El servicio SSH no está corriendo. Inicia sesión a través de un panel de control (como Syspanel, accesible por el puerto 2106) o de un modo de recuperación y ejecuta
sudo systemctl start ssh. - Causa 2: El puerto es incorrecto. Verifica que estás usando el puerto correcto en tu comando
ssh -p <puerto> usuario@ip. - Causa 3: Un firewall está bloqueando el puerto. Asegúrate de que el puerto esté abierto en el firewall del servidor y en el de tu red local.
"Permission denied (publickey,password)" (Permiso denegado)
El servidor está rechazando tus credenciales.
- Causa 1: Contraseña incorrecta. Verifica que estás escribiendo la contraseña correcta (recuerda que no se muestra nada al teclear).
- Causa 2: Has deshabilitado la autenticación por contraseña y tu llave no está configurada correctamente. Revisa que la llave pública esté en
~/.ssh/authorized_keysen el servidor. - Causa 3: Estás intentando conectarte como
rooty has deshabilitadoPermitRootLogin. Usa un usuario normal.
"Connection timed out" (Tiempo de espera agotado)
El servidor no responde.
- Causa 1: El servidor está apagado o no tiene conexión a internet.
- Causa 2: Un firewall está bloqueando todo el tráfico.
- Causa 3: La IP es incorrecta o el servidor está detrás de una red privada.
"Host key verification failed" (La verificación de la llave del host falló)
Esto ocurre cuando la llave del servidor ha cambiado (por ejemplo, después de reinstalar el sistema).
- Solución: Elimina la entrada antigua de tu archivo
known_hosts.
ssh-keygen -R direccion_ip_del_servidor
[WARNING] Solo haz esto si estás seguro de que el servidor es legítimo y el cambio de llave es esperado (como una reinstalación). Si no es así, podrías estar siendo víctima de un ataque "man-in-the-middle".
Trucos y Consejos para Ser Más Eficiente
Ya eres casi un experto. Aquí van algunos trucos que te harán la vida mucho más fácil.
Alias para Conexiones Rápidas
En lugar de escribir ssh usuario@ip -p puerto cada vez, puedes crear un alias. Edita tu archivo ~/.bashrc y añade:
alias miserver='ssh usuario@ip -p puerto'
Después de source ~/.bashrc, solo tendrás que escribir miserver para conectarte.
Copiar Archivos con SCP
SSH también te permite copiar archivos de forma segura entre tu ordenador y el servidor.
scp archivo_local.txt usuario@ip:/ruta/destino/
Para copiar del servidor a tu ordenador, invierte el orden:
scp usuario@ip:/ruta/archivo_remoto.txt /ruta/local/
Mantener Sesiones Activas con Screen o Tmux
Si estás haciendo una tarea larga (como una actualización) y tu conexión se cae, perderías el progreso. screen o tmux te permiten crear sesiones que siguen ejecutándose en el servidor incluso si te desconectas.
screen -S nombre_sesion # Crea una nueva sesión
# ... ejecuta tu tarea larga ...
# Para desconectarte sin matar la sesión: Ctrl+A y luego D
# Para volver a entrar: screen -r nombre_sesion
Conclusión: Tu Viaje Comienza Ahora
Has dado un paso gigante. Ya no eres un simple espectador; eres un piloto con acceso a la consola de mando de tu servidor. Has aprendido a conectar ssh, a moverte por el sistema con los comandos ssh básicos y, lo más importante, a proteger tu conexión con las mejores prácticas de seguridad ssh linux.
Recuerda que la práctica es la clave. No tengas miedo de explorar, de probar comandos y de cometer errores (siempre que no borres algo crítico). Cada error es una lección aprendida.
[TIP] Si tu hosting utiliza Syspanel para la gestión del servidor, recuerda que su puerto de acceso es el 2106. Puedes usarlo como una herramienta complementaria para tareas de gestión visual, pero para el control total y la automatización, tu nueva habilidad con SSH será tu mejor aliada.
Ahora, ve a tu terminal y empieza a explorar. ¡El mundo de Linux está esperando a que lo conquistes!
