Introducción a SSH: configuración de acceso remoto, uso de claves
1. ¿Qué es SSH?
Imagínate que estás en un extremo del planeta, y el servidor que necesitas configurar está en el otro extremo. El trabajo de un técnico de IT corriendo de un lado a otro no es lo que queremos. Afortunadamente, existe SSH (Secure SHell), una herramienta para gestionar servidores de forma remota.
SSH es un protocolo de red que permite conectarse de manera segura a computadoras remotas. La conexión se realiza usando encriptación, lo que significa que los datos transmitidos están protegidos de ojos curiosos. SSH reemplaza métodos obsoletos como Telnet, que transmitía datos en texto plano (como una postal de correos).
Ventajas de SSH
- Seguridad. SSH utiliza encriptación, protegiendo los datos contra intercepciones.
- Flexibilidad. Gestión remota del servidor, transferencia de archivos, creación de túneles: todo esto está disponible con SSH.
- Multiplataforma. Funciona tanto en Linux, como en Windows (incluyendo WSL) y MacOS.
Ahora que entiendes para qué sirve SSH, pasemos a la práctica.
2. Instalación del cliente SSH
Vamos a empezar con el cliente, que permitirá conectarse al servidor. Si estás usando una distribución moderna de Linux, el cliente SSH probablemente ya está instalado. Vamos a comprobarlo:
ssh -V
Deberías ver la información sobre la versión del cliente SSH. Si el comando no está disponible, instálalo (en Ubuntu y otras distribuciones basadas en Debian):
sudo apt update
sudo apt install openssh-client
En MacOS el cliente SSH ya está preinstalado, y si estás trabajando en WSL, la instalación es similar a Linux.
3. Conexión a un servidor remoto usando SSH
La conexión al servidor se realiza con el siguiente comando:
ssh username@hostname
username
— es el nombre de usuario en el servidor remoto.hostname
— es la dirección IP o el nombre de dominio del servidor.
Ejemplo de conexión:
ssh student@192.168.1.10
Si todo está configurado correctamente, el sistema pedirá una contraseña. Después de ingresar la contraseña, entrarás en la consola remota del servidor. ¡Felicidades, estás a medio camino de convertirte en el "operador del supervillano en una película de hackers"!
4. Instalación y configuración del servidor SSH
Instalación del servidor SSH
Si estás trabajando en un servidor o una máquina local a la que quieres conectarte, necesitas instalar el servidor SSH. En Ubuntu, haz esto:
sudo apt update
sudo apt install openssh-server
Comprueba el estado del servicio SSH:
sudo systemctl status ssh
Deberías ver un mensaje como active (running)
. Si el servidor no está iniciado, usa:
sudo systemctl start ssh
sudo systemctl enable ssh
Ahora el servidor SSH está listo para aceptar conexiones.
Configuración del servidor SSH
El archivo principal de configuración del servidor SSH es /etc/ssh/sshd_config
. Para editarlo, usa cualquier editor de texto, como nano
:
sudo nano /etc/ssh/sshd_config
Presta atención a los siguientes parámetros:
Port 22
— el puerto en el que funciona SSH.PermitRootLogin no
— prohibición de conexión para root (se recomienda dejarlo enno
por razones de seguridad).PasswordAuthentication yes
— autorización de conexión mediante contraseña.
Después de cambiar los parámetros, reinicia el servidor SSH:
sudo systemctl restart ssh
5. Uso de autenticación por claves
Conectarse con contraseña es práctico, pero no es seguro. La mejor opción es usar claves SSH.
Generación de claves SSH
En la máquina cliente, ejecuta el comando:
ssh-keygen
El script te pedirá una ruta para guardar la clave (por defecto ~/.ssh/id_rsa
). Puedes presionar Enter para aceptarla. Luego se te preguntará por una frase-contraseña. Es mejor dejarla vacía para simplificar (aunque no es del todo seguro).
Después de ejecutar el comando, se crearán los archivos de claves:
id_rsa
— clave privada (no la hagas pública, como el código fuente de tu proyecto antes del lanzamiento, especialmente si está lleno de deudas técnicas).id_rsa.pub
— clave pública (esta se puede usar para conectarse).
Transferir la clave al servidor
Usa el comando ssh-copy-id
para transferir la clave pública al servidor:
ssh-copy-id username@hostname
Esto añadirá tu clave pública al archivo ~/.ssh/authorized_keys
en el servidor. Ahora puedes conectarte sin introducir una contraseña.
Intenta hacerlo:
ssh username@hostname
Si todo funcionó correctamente, no se te pedirá la contraseña. Oficialmente tu vida se volvió un poco más sencilla.
SSH y WSL
Si estás trabajando en Windows a través de WSL, también puedes usar SSH allí. Abre la terminal de WSL e instala el cliente SSH:
sudo apt update
sudo apt install openssh-client
Los pasos posteriores son los mismos que para Linux.
6. Parte práctica: configurar SSH en localhost
Para practicar, puedes configurar una conexión SSH entre dos máquinas en la misma red o incluso en tu propia computadora (usando localhost
como dirección).
- Instala el servidor y el cliente de SSH en una máquina.
- Conéctate a través de la dirección local:
ssh your_user@localhost
- Configura la conexión con clave como se mostró anteriormente.
Como resultado, deberías obtener una conexión sin necesidad de introducir una contraseña.
7. Trabajando con configuraciones y alias de SSH
Si te conectas frecuentemente a diferentes servidores, puedes hacerte la vida más fácil añadiendo una configuración de SSH en el archivo ~/.ssh/config
:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
Ahora puedes conectarte simplemente con el comando:
ssh myserver
Errores comunes y cómo solucionarlos
Error "Connection refused". Esto significa que el servidor SSH no está en ejecución en la máquina remota. Asegúrate de que está instalado y funcionando.
Error "Permission denied". O bien ingresaste una contraseña incorrecta o las claves no están configuradas correctamente. Verifica el contenido del archivo
~/.ssh/authorized_keys
en el servidor.Error "No route to host". Verifica si el servidor está accesible a través de la red (usa
ping
).
Ahora estás armado con conocimientos sobre cómo configurar SSH, usar claves y evitar problemas típicos. Es una herramienta poderosa que se usa en todas partes, ya sea para configurar servidores en el trabajo o manejar tu Raspberry Pi en casa.
GO TO FULL VERSION