FaciLinux

Guide Facili per Linux

SSH Port Forwarding

- Posted in linux by

Introduzione

SSH Port Forwarding è un meccanismo che utilizza SSH per il tunneling delle porte tcp da client a server o viceversa. Può essere utilizzato per aggiungere la crittografia alle applicazioni legacy o passare attraverso i firewall. SSH Tunneling

Local Forwarding

E' utilizzato per inoltrare una connessione indirizzata a una porta del client verso una porta di un server, eventualmente differente dal server ssh utilizzato.

In SSH, il local port forwarding viene impostato con l'opzione -L:

ssh -L 80:intra.example.com:80 gw.example.com

Questo esempio crea un tunnel ssh al server gw.example.com (jump server) e inoltra le connessioni indirizzate alla porta 80 sul computer locale alla porta 80 del server intra.example.com attraverso il tunnel.

Per impostazione predefinita, vengono inoltrate le connessioni indirizzate alla porta 80 di qualsiasi ip del client, quindi altri client potrebbero utilizzare il tunnel. Tuttavia, questo può essere limitato ai fornendo un indirizzo di bind:

ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

L'opzione LocalForward nel file di configurazione del client ssh /etc/ssh/ssh_config può essere utilizzata per configurare il bind senza doverlo specificare nel comando

LocalForward  

Specifies that a TCP port on the local machine be forwarded over the secure channel to the specified host and port from the remote machine.
The first argument must be [bind_address:]port and the second argument must be host:port.

Esempio

ssh -f user@personal-server.com -L 2000:personal-server.com:25 -N

Il flag -f imposta ssh in background prima che venga eseguito il comando.
Il flag -L 2000:personal-server.com:25 imposta un Local Forwarding nella forma -L local-port:host:remote-port.
Il flag -N imposta ssh in modo che non venga eseguito alcun comando sul server remoto.