Ricerca nel sito web

Come creare tunneling SSH o port forwarding in Linux


Il tunneling SSH (noto anche come port forwarding SSH) consiste semplicemente nell'instradare il traffico della rete locale tramite SSH verso host remoti. Ciò implica che tutte le tue connessioni sono protette tramite crittografia. Fornisce un modo semplice per configurare una VPN (rete privata virtuale) di base, utile per connettersi a reti private su reti pubbliche non sicure come Internet.

Potresti anche essere utilizzato per esporre server locali dietro NAT e firewall a Internet tramite tunnel sicuri, come implementato in ngrok.

Le sessioni SSH consentono il tunneling delle connessioni di rete per impostazione predefinita e sono disponibili tre tipi di port forwarding SSH: locale, remoto e dinamico >inoltro del porto.

In questo articolo dimostreremo come impostare in modo rapido e semplice il tunneling SSH o i diversi tipi di port forwarding in Linux.

Ambiente di test:

Ai fini di questo articolo, utilizziamo la seguente configurazione:

  1. Host locale: 192.168.43.31
  2. Host remoto: Linode CentOS 7 VPS con nome host server1.example.com.

Di solito, puoi connetterti in modo sicuro a un server remoto utilizzando SSH come segue. In questo esempio, ho configurato l'accesso SSH senza password tra i miei host locali e remoti, quindi non è stata richiesta la password dell'amministratore dell'utente.

ssh [email   

Inoltro porta SSH locale

Questo tipo di port forwarding ti consente di connetterti dal tuo computer locale a un server remoto. Supponendo che tu sia protetto da un firewall restrittivo o che ti venga impedito da un firewall in uscita di accedere a un'applicazione in esecuzione sulla porta 3000 sul tuo server remoto.

Puoi inoltrare una porta locale (ad esempio 8080) che potrai utilizzare per accedere localmente all'applicazione come segue. Il flag -L definisce la porta inoltrata all'host remoto e alla porta remota.

ssh [email  -L 8080:server1.example.com:3000

Aggiungere il flag -N significa non eseguire un comando remoto, in questo caso non otterrai una shell.

ssh -N [email  -L 8080:server1.example.com:3000

L'opzione -f indica a ssh di essere eseguito in background.

ssh -f -N [email  -L 8080:server1.example.com:3000

Ora, sul tuo computer locale, apri un browser, invece di accedere all'applicazione remota utilizzando l'indirizzo server1.example.com:3000, puoi semplicemente utilizzare localhost:8080 o 192.168.43.31:8080, come mostrato nello screenshot qui sotto.

Inoltro porta SSH remoto

Il port forwarding remoto ti consente di connetterti dal tuo computer remoto al computer locale. Per impostazione predefinita, SSH non consente il port forwarding remoto. Puoi abilitarlo utilizzando la direttiva GatewayPorts nel file di configurazione principale SSHD /etc/ssh/sshd_config sull'host remoto.

Apri il file per la modifica utilizzando il tuo editor della riga di comando preferito.

sudo vim /etc/ssh/sshd_config 

Cerca la direttiva richiesta, decommentala e imposta il suo valore su yes, come mostrato nello screenshot.

GatewayPorts yes

Salva le modifiche ed esci. Successivamente, devi riavviare sshd per applicare la recente modifica apportata.

sudo systemctl restart sshd
OR
sudo service sshd restart 

Quindi esegui il seguente comando per inoltrare la porta 5000 sul computer remoto alla porta 3000 sul computer locale.

ssh -f -N [email  -R 5000:localhost:3000

Una volta compreso questo metodo di tunneling, puoi esporre in modo semplice e sicuro un server di sviluppo locale, in particolare dietro NAT e firewall, a Internet tramite tunnel sicuri. Tunnel come Ngrok, pagekite, localtunnel e molti altri funzionano in modo simile.

Inoltro porta SSH dinamico

Questo è il terzo tipo di port forwarding. A differenza del port forwarding locale e remoto che consente la comunicazione con una singola porta, rende possibile una gamma completa di comunicazioni TCP su una serie di porte. L'inoltro porta dinamico configura il tuo computer come un server proxy SOCKS in ascolto sulla porta 1080, per impostazione predefinita.

Per cominciare, SOCKS è un protocollo Internet che definisce come un client può connettersi a un server tramite un server proxy (SSH in questo caso). Puoi abilitare il port forwarding dinamico utilizzando l'opzione -D.

Il seguente comando avvierà un proxy SOCKS sulla porta 1080 consentendoti di connetterti all'host remoto.

ssh -f -N -D 1080 [email 

D'ora in poi, puoi fare in modo che le applicazioni sul tuo computer utilizzino questo server proxy SSH modificando le loro impostazioni e configurandole per usarlo, per connettersi al tuo server remoto. Tieni presente che il proxy SOCKS smetterà di funzionare dopo aver chiuso la sessione SSH.

Leggi anche: 5 modi per mantenere attive le sessioni SSH remote dopo aver chiuso SSH

Riepilogo

In questo articolo abbiamo spiegato i vari tipi di port forwarding da una macchina all'altra, per incanalare il traffico attraverso la connessione SSH sicura. Questo è uno dei tanti usi di SSH. Puoi aggiungere la tua voce a questa guida tramite il modulo di feedback riportato di seguito.

Attenzione: il port forwarding SSH presenta alcuni notevoli svantaggi, se ne può abusare: può essere utilizzato per aggirare i programmi di monitoraggio della rete e di filtraggio del traffico (o firewall). Gli aggressori possono utilizzarlo per attività dannose. Nel nostro prossimo articolo, mostreremo come disabilitare il port forwarding locale SSH. Rimani connesso!