SSH y redirecciones SSH
Descripción
SSH (Secure Shell) es un protocolo de red que permite comunicarse de forma segura con otros dispositivos mediante una conexión cifrada. Se utiliza habitualmente para la administración remota de servidores y equipos de red.
Su importancia radica en que protege la información transmitida, como credenciales, comandos o archivos, incluso cuando la comunicación viaja por redes no seguras.

Objetivos
- Comprender el funcionamiento de SSH y su importancia en la seguridad de las comunicaciones.
- Instalar y configurar un servidor SSH.
- Permitir el acceso remoto a una máquina mediante autenticación segura.
- Establecer una conexión SSH desde otra máquina.
- Comprobar la autenticación mediante claves públicas y privadas.
- Entender el uso de redirecciones o túneles SSH.

Pautas en el servidor
1. Instalar OpenSSH Server
Utiliza el gestor de paquetes para instalar el servidor SSH:
sudo apt update
sudo apt install openssh-server -y
2. Comprobar el estado del servicio
sudo systemctl status ssh
3. Crear un usuario para la conexión SSH
En lugar de permitir el acceso remoto como root, es preferible crear un usuario específico para la conexión SSH.
sudo adduser sshuser
sudo usermod -aG sudo sshuser
4. Editar la configuración del servidor SSH
Edita el archivo de configuración:
sudo nano /etc/ssh/sshd_config
Revisa al menos estas directivas:
Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
Explicación rápida
- Port: el puerto por defecto de SSH es el 22.
- PermitRootLogin no: deshabilita el acceso remoto directo como
root. - PubkeyAuthentication yes: permite autenticarse mediante claves públicas.
- PasswordAuthentication no: deniegae autenticación por contraseña

5. Reiniciar el servicio
sudo systemctl restart ssh
6. Configurar el cortafuegos
Si estás usando ufw, abre el puerto SSH:
sudo ufw allow ssh
7. Comprobar la dirección IP del servidor
ip a
Anota la dirección IP de server1, ya que la necesitarás desde el cliente.

Pautas en el cliente
Realiza estas operaciones en cliente.
1. Generar el par de claves SSH
La forma correcta de trabajar con autenticación por clave es generar las claves en el cliente, no en el servidor.
ssh-keygen -t rsa -b 4096
¿Qué hace este comando?
- ssh-keygen: genera un par de claves SSH.
- -t rsa: indica que se utilizará el algoritmo RSA.
- -b 4096: indica el tamaño de la clave.
Durante el proceso, se te pedirá:
- el nombre del archivo donde guardar la clave,
- y una frase de paso opcional para aumentar la seguridad.
El resultado será la creación de dos archivos en ~/.ssh/:
- id_rsa → clave privada
- id_rsa.pub → clave pública
La clave privada nunca debe compartirse.
La clave pública es la que se copia al servidor.

2. Comprobar los archivos generados
cd ~/.ssh
ls
Verás algo parecido a esto:
drwx------ 2 alumno alumno 4096 Mar 20 10:44 .
drwxr-x--- 3 alumno alumno 4096 Mar 20 10:43 ..
-rw------- 1 alumno alumno 3381 Mar 20 10:44 id_rsa
-rw-r--r-- 1 alumno alumno 743 Mar 20 10:44 id_rsa.pub
3. Copiar la clave pública al servidor
En el servidor
Inicia sesión como sshuser y crea la estructura necesaria:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
Pega dentro el contenido de la clave pública (id_rsa.pub) y guarda el archivo.
Después, ajusta los permisos:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Añade la clave pública al archivo ~/.ssh/authorized_keys del servidor.
4. Conectarse al servidor
Una vez copiada la clave pública, ya puedes conectarte por SSH (ejecuta desde donde se encuentre tu clave privada):
ssh -i "id_rsa" sshuser@IPSERVIDOR
5. Finalizar la conexión
Para cerrar la sesión SSH:
exit
Verás algo parecido a esto:
sshuser@server1:~$ exit
logout
Connection to 192.168.1.10 closed.
Redirecciones en SSH
¿Qué es una redirección SSH?
Una redirección SSH o túnel SSH permite enviar tráfico de red a través de una conexión segura SSH, redirigiendo puertos desde el equipo local al remoto o viceversa.
Se utiliza, por ejemplo, para:
- acceder a servicios internos de una red remota,
- cifrar conexiones,
- o alcanzar equipos que no son accesibles directamente desde el exterior.
Ejemplo práctico
ssh -i "C:\Users\rafa\.ssh\id_rsa_damx" -p 30000 damx@mvs.sytes.net -L 4444:127.0.0.1:3389 -L 4449:192.160.51.149:5432
¿Qué hace este comando?
Se conecta a mvs.sytes.net por el puerto 30000 como usuario damx, usando la clave privada id_rsa_damx.
Además, crea dos redirecciones locales:
1. localhost:4444 -> 127.0.0.1:3389
Permite acceder desde tu equipo local al servicio de Escritorio Remoto (RDP) disponible en el propio servidor remoto.
Por ejemplo, podrías conectarte a:
localhost:4444
2. localhost:4449 -> 192.160.51.149:5432
Permite acceder desde tu equipo local a un servidor PostgreSQL ubicado en una máquina interna de la red remota.
Por ejemplo, tu cliente de base de datos podría conectarse a:
localhost:4449
Conexiones SSH y NAT
Ideas clave
- El puerto por defecto de SSH es el 22.
- Un equipo puede conectarse por SSH a otro equipo de su misma red sin necesidad de NAT.
- Si un equipo quiere conectarse a otro situado en una red diferente a través de Internet, normalmente será necesario que exista conectividad enrutable o una redirección adecuada.
- Si hay varios servidores SSH dentro de una misma red privada y se quiere acceder a ellos desde Internet, se necesitarán puertos externos distintos para que el router sepa a qué equipo debe redirigir cada conexión.
Ejercicios
Responde a las siguientes preguntas sobre el esquema de red facilitado.

Pregunta 1
EQ3 accede por SSH a EQ4.
¿Hace falta redirección NAT?
Pregunta 2
EQ3 accede por SSH a EQ6 (en otra red).
¿Hace falta redirección NAT?
Pregunta 3
Desde fuera de la red (Internet) se quiere acceder por SSH a EQ2 y EQ4.
¿Hace falta redirección NAT?
Pregunta 4
EQ3 quiere conectarse por SSH a EQ4 (192.168.20.13).
¿Qué comando usaría?
A) ssh usuario@EQ4
B) ssh usuario@80.40.30.44
C) ssh usuario@192.168.20.13
D) ssh -p 22 usuario@172.16.0.201
Pregunta 5
Desde Internet, un usuario quiere acceder por SSH a EQ2.
¿Qué configuración NAT debe aplicarse en Router3 y Router1?
Pregunta 6
¿Por qué se necesita cambiar el puerto externo (por ejemplo, 2223) cuando varios equipos ofrecen SSH en redes privadas?
A) Porque no pueden tener la misma IP interna
B) Porque solo se puede hacer una redirección por puerto
C) Porque SSH solo funciona en redes internas
D) Porque no se pueden usar switches con NAT