CodeGym /Cursos /Docker SELF /Introducción a SSH: configuración de acceso remoto, uso d...

Introducción a SSH: configuración de acceso remoto, uso de claves

Docker SELF
Nivel 4 , Lección 3
Disponible

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

  1. Seguridad. SSH utiliza encriptación, protegiendo los datos contra intercepciones.
  2. Flexibilidad. Gestión remota del servidor, transferencia de archivos, creación de túneles: todo esto está disponible con SSH.
  3. 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 en no 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).

  1. Instala el servidor y el cliente de SSH en una máquina.
  2. Conéctate a través de la dirección local:
ssh your_user@localhost
  1. 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

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

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

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

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION