Auto tunnel ssh

Pasando a través de un firewall
Con esto se puede conectar automáticamente un servidor (1) detrás de un cortafuego a un servidor externo (2) en internet y desde el servidor externo (2) acceder a la consola del servidor (1)

Para que funcione se necesita de 3 ordenadores:
server 1: está detrás de un cortafuego
server 2: tiene una IP pública y se puede acceder por ssh
client: es un ordenador de casa conectado a internet por wifi/cable/4g…

Antes de emezar nos aseguramos con el Server 1 pueda entrar en el server 2 por ssh sin contraseña utilizando la clave pública. Si no puede hacerlo mira este articulo:

https://isla1.tormentasolar.win/?p=313

En el servidor 1 (detrás del cortafuego) vamos a crear este servicio y instalar autossh

apt install autossh

creamos el servicio

mcedit /etc/systemd/system/autossh-ssh-tunnel.service

la puerta 16789 puede cambiar en cualquier número comprendido entre 1025 y 65535 y que no sea ocupado por otro servicio, como por ejemplo 1935/3565/8080/9000/10000….

[Unit]
Description=AutoSSH tunnel service on local port 16789
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 16789:localhost:22 root@210.199.15.61

[Install]
WantedBy=multi-user.target

donde 210.199.15.61 es la IP pública del servidor 2 (tu pon la IP que corresponda) o su dominio si tiene IP dinámica. (acuérdate de ddclient en el server 2)

ahora instala y lanza el servicio con

systemctl enable autossh-ssh-tunnel.service
systemctl start autossh-ssh-tunnel.service

Cliente

luego desde el Client (el de casa) entramos en el Server 2 por ssh y una vez dentro le damos:

ssh root@127.0.0.1 -p 16789

Nos pide la contraseña del Server 1 … y ya estamos dentro y pasando a través del firewall (cortafuego)!

Acuérdate que si en el server 1 está deshabilitado el acceso de root por ssh, no podrás entrar, así que… o lo tienes activado, o usa otro usuario donde te habrás asegurado que pueda entrar por ssh al server 2 sin contraseña, usando el certificado ssl

NOTA: si en el servidor usas un puerto diferente del 22, (por ejemplo el 2222) entonces hay que modificar un poco el servicio, en:

[Unit]
Description=AutoSSH tunnel service on local port 16789
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 16789:localhost:2222 root@210.199.15.61 -p 2222

[Install]
WantedBy=multi-user.target

Comentarios cerrados.