Minientrada

Túnel SSH: ejemplo de un local port forwarding

Hasta que (más o menos) entendí esto de los túneles SSH.

Voy a tratar de explicarlo con dibujito y todo para que, cuando se me olvide, pueda volver a aquí tantas veces como precise para re-capturar la idea.

Escenario

  1. Necesitamos acceder vía Remote Desktop Protocol (RDP), a un servidor Windows, a través de Internet.
  2. No tenemos permiso para hacerlo, nadie está publicando el acceso RDP a ese Windows Server.
  3. Pero sí existe publicación a un servidor SSH que está en la misma LAN que el Windows Server.

127.0.0.1 – Dirección localhost del equipo donde se crea el túnel SSH.

8888 – Local port que se utilizará para hacer el forwarding.

18.7.22.84:22 – IP pública de la red donde reside nuestro Windows Server. Con publicación de acceso SSH a través del port 22.

192.168.0.11 – IP local del firewall, solo a efectos de indicar que está en la misma LAN que nuestro Windows Server.

3389 – Port que está escuchando en el Windows.

192.168.0.7 – Dirección LAN del Windows Server.

Crear el túnel SSH

En primer lugar vamos a crear el túnel SSH.

Desde le línea de comando escribimos lo siguiente.

-L 8888 – Puerto local utilizado para el forwarding.

192.168.0.7:3389 – Dirección IP de LAN y puerto de RDP del Windows Server.

user@18.7.22.84 – Acceso vía IP pública al servidor SSH remoto.

Nos va a pedir la contraseña y listo, el túnel se habrá establecido.

Quizás te interese, ya se por seguridad o bien por comodidad, dejar de ingresar la contraseña cuando accedes por SSH a un dispositivo, en tal caso te invito a leer esta entrada donde te cuento como podés hacerlo.

Acceder al escritorio remoto

En este segundo paso es donde vamos a establecer conexión al escritorio remoto.

Iniciamos el software que utilicemos habitualmente y creamos la conexión indicada a continuación.

¡¿Y esto?!

Recordá que en el paso de creación del túnel dijimos que el tráfico que hagamos al port local 8888 se redirigirá al port 3389 del Windows Server.

Así de simple y efectivo.

Los gráficos fueron creados con Excalidraw, una herramienta que está buenísima.

Espero que te sea útil y gracias por leer.

Anuncio publicitario
Minientrada

Creación de una sesión SSH password-less

En esta entrada voy a configurar el acceso SSH a un equipo remoto utilizando llaves público-privada. De esta manera evitamos tener que ingresar la contraseña cada vez que accedamos vía SSH al equipo remoto.

Mi equipo local es un Debian 10.5 instalada en Windows 10 modo WSL. El equipo remoto es un Linux Mint 19.3 [192.168.0.12].

Contenido
1. Setup
2. Instalar el cliente SSH
3. Crear el par de llaves en el equipo local
4. Copiar la llave pública al equipo remoto
5. Probar el acceso SSH password-less
6. Links de referencia

1. Setup

Windows 10

Debian 10.5 (WSL) (equipo local).

Linux Mint 19.3 (equipo remoto).

2. Instalar el cliente SSH

Abrimos Debian en WSL y validamos si tenemos instalado el cliente Open SSH en el equipo local. Si no está instalado, con este mismo comando se instalará.

sudo apt install openssh-client

3. Crear el par de llaves en el equipo local

Para crear el par de llaves en el equipo local ejecutamos.

ssh-keygen -t rsa

Salida del comando.

leandro@Windows10:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/leandro/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/leandro/.ssh/id_rsa.
Your public key has been saved in /home/leandro/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:77DpeJRFRV5PRxkBYKFPm6eu4/CuG5iVurhCf6CwQZQ leandro@Windows10
The key's randomart image is:
+---[RSA 2048]----+
| .       *=.o+B|
| E        +. . +.|
|.       o ..   .|
| .     . + o   |
|.     oSo + .   |
|o. .  = o. o   |
|ooo .+ +. ..     |
|.o .....=*.     |
| .oo..=O=+.     |
+----[SHA256]-----+

4. Copiar la llave pública al equipo remoto

En el equipo local vamos a utilizar el comando ssh-copy-id para copiar la llave pública al equipo remoto [192.168.0.12].

ssh-copy-id -i ~/.ssh/id_rsa.pub leandro@192.168.0.12

Nos pide contraseña del usuario en el equipo remoto y luego agrega la llave.

Salida del comando.

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/leandro/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
leandro@192.168.0.12's password:
​Number of key(s) added: 1

5. Probar el acceso SSH password-less

Finalmente para probarlo simplemente ejecutamos.

ssh 'leandro@192.168.0.12'

6. Links de referencia

Generate SSH Keys on Windows 10

How to execute Linux commands on remote system over SSH

Disclaimer: por favor utilizar este material bajo tu responsabilidad. No aplicar en ambientes productivos sin haberlo probado antes y asegurate de tener siempre una copia de seguridad.