SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Creare un tunnel ssh su Linux o OSX

I tunnel SSH (o meglio SSH Port Forwarding) sono un modo sicuro (la connessione non viaggia in chiaro) per l’accesso ad un host (un server, un pc), che non è possibile raggiungere normalmente. Ad esempio un caso potrebbe essere quello in cui ci sono degli host non connessi direttamente ad internet, ma tramite  un firewall. Per poter usare questo strumento, e’ necessario che almeno uno degli host (o meglio il firewall) sia raggiungibile da internet ed abbia un server ssh installato. Ci sono due tipologie di tunnel SSH: Local Port Forwarding e Remote Port Forwarding.

Local Port Forwarding
Questo permette di accedere alle porte (i vari servizi) su hosts che non si possono raggiungere direttamente, effettuando un “piping” delle informazioni in una connessione SSH verso un host pubblico (quest’ultimo deve essere in grado di raggiungere gli hosts interni). Ad esempio immaginiamo che mi trovi a casa e voglia raggiungere il PC dell’ufficio che non e’ connesso direttamente ad internet ma e’ “dietro” un firewall con shell ssh. Per gli esempi faro’ riferimento alla seguente situazione:
PC-Locale -> {Internet} -> Firewall (IP: 125.xxx.xxx.xxx) -> Host destinazione dietro il firewall (IP: 10.xxx.xxx.xxx)

local port forwarding

Per attivare il tunnessl SSH in questo caso basta digitare sul PC locale (Linux, OSX, etc):

ssh -N -L 8080:10.xxx.xxx.xxx:80 user@125.xxx.xxx.xxx

dove:
-L : il tunnel di tipo "Local"
8080 : la porta che viene aperta in locale
10.xxx.xxx.xxx:80 : l'host non raggiungibile via internet e la porta verso cui
                    creare il tunnel
user@125.xxx.xxx.xxx : il server a cui ci connettiamo "125.xxx.xxx.xxx"
                    (raggiungibile da internet) ed il relativo utente "user"

Con questo comando gli diciamo che chiamando la porta 8080 in locale, ci viene restituito quello che e’ presente sulla porta 80 del server 10.xxx.xxx.xxx altrimenti non raggiungibile.

Remote Port Forwarding
Questo sistema invece consente di aprire un tunnel in modo inverso ovvero, facendo riferimento all’esempio precedente, e’ come se mi trovo in ufficio ed apro una connessione verso il mio PC, attraverso il firewall, ad un altro PC con IP pubblico anche esteno alla rete dell’ufficio.

remote port forwarding

In questo caso il comando da lanciare sul Pc in ufficio e’:
ssh -N -R 8080:10.xxx.xxx.xxx:80 user@125.xxx.xxx.xxx
dove:

-R : il tunnel di tipo "Remote"
8080 : la porta che viene aperta in remoto
10.xxx.xxx.xxx:80 : l'host non raggiungibile via internet e la porta verso cui
                    creare il tunnel
user@125.xxx.xxx.xxx : il server a cui ci connettiamo "125.xxx.xxx.xxx"
                    (raggiungibile da internet) ed il relativo utente "user"

a questo punto bastera’ richiamare dal PC a casa l’indirizzo http://125.xxx.xxx.xxx:8080 per visualizzare la risposta del server web (porta 80) del Pc in ufficio 10.xxx.xxx.xxx

La differenza sostanziale tra le due modalita’ e’ il punto da cui si lancia il comando. Tornando sempre all’esempio iniziale, se sono a casa e voglio connettermi al Pc in ufficio, usero’ un tunnel di tipo “Local”, se invece sono in ufficio e voglio dare la possibilita’ di raggiungere il mio PC ad un utente remoto, usero’ un tunnel di tipo “Remote”.

L’esempio riportato e’ chiaramente utile per raggiungere la porta 80 (server web), ma allo stesso modo si potrebbe raggiungere il PC interno (es. 10.xxx.xxx.xxx) in Desktop Remote o VNC, specificando le opportune porte.




Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto
Tag:

Your email address will not be published. Required fields are marked *

*

Page optimized by WP Minify WordPress Plugin