skip to Main Content
Come Fare Un Tunnel SSH Su Linux

Un tunnel SSH è un metodo potente e sicuro per inoltrare il traffico di rete attraverso una connessione crittografata, permettendo di accedere a servizi di rete in modo sicuro. In questo articolo, spiegheremo come creare un tunnel SSH su Linux, una tecnica utile per accedere a servizi che altrimenti sarebbero inaccessibili o per proteggere la comunicazione su reti non sicure.

Cos’è un Tunnel SSH?

Un tunnel SSH è una connessione che consente di inoltrare il traffico da un dispositivo locale a un server remoto tramite una connessione cifrata. Esistono due tipi di tunnel: il port forwarding locale e il port forwarding remoto. Il port forwarding locale inoltra il traffico di rete dalla macchina locale a un server remoto, mentre il port forwarding remoto inoltra il traffico dal server remoto alla macchina locale.

Requisiti

Prima di iniziare, assicurati di avere:

  • Un accesso ssh ad un server remoto.
  • Le credenziali (nome utente e password, o chiave privata) per accedere al server.

Port Forwarding Locale

Il port forwarding locale è utile quando si desidera accedere a un servizio su un server remoto tramite una porta locale. Supponiamo di voler accedere a un server web remoto (che ascolta sulla porta 80) tramite la porta 8080 sulla tua macchina locale. Il comando da eseguire è il seguente:

ssh -L 8080:localhost:80 utente@server_remoto
  • L’opzione -L sta ad indicare che vogliamo creare un binding
  • La porta 8080 è la porta alla quale ci dovremo connettere in locale, per raggiungere il nostro servizio remoto (nel nostro caso sarà: localhost:8080)
  • server_remoto è il nome del server al quale non avremmo avuto accesso senza il tunnel
  • 80 è la porta del servizio remoto al quale non ci potevamo connettere
  • utente è il nome di un utente che ha accesso sul server remoto
  • localhost è la nostra macchina locale Linux su cui stiamo digitanto il comando

Il parametro -L specifica il port forwarding locale e indica che il traffico inviato alla porta 8080 sulla macchina locale sarà inoltrato alla porta 80 del server remoto.

Come Usare il Tunnel SSH con Port Forwarding Locale

Una volta creato un tunnel, puoi utilizzarlo per accedere ai servizi remoti come se fossero locali. Ad esempio, se hai configurato un tunnel SSH per accedere a un server web remoto sulla porta 8080, puoi semplicemente aprire il tuo browser e digitare http://localhost:8080 nella barra degli indirizzi. Il browser si collegherà al server remoto tramite il tunnel, garantendo che il traffico sia crittografato e sicuro.

Port Forwarding Remoto

Il port forwarding remoto permette di esporre un servizio locale a un server remoto. Ad esempio, se hai un’applicazione che gira sulla porta 3000 del tuo computer locale e vuoi renderla accessibile dal server remoto, puoi usare:

ssh -R 3000:localhost:3000 utente@server_remoto

Questo comando inoltrerà il traffico dalla porta 3000 del server remoto alla porta 3000 del tuo computer locale.

Dynamic Port Forwarding (SOCKS Proxy)

Un’altra opzione è il dynamic port forwarding, che permette di creare un proxy SOCKS per inoltrare il traffico di rete dinamicamente. Questo è utile per bypassare firewall o navigare in modo anonimo. Il comando è:

ssh -D 8080 utente@server_remoto

Dopo aver eseguito questo comando, puoi configurare il tuo browser per utilizzare localhost:8080 come proxy SOCKS.

Esempi di Uso Comune del Tunnel

Accesso a un Database MySQL Remoto

Se un database MySQL è accessibile solo dal server remoto, puoi configurare un tunnel SSH per connetterti al database dalla tua macchina locale:

ssh -L 3306:localhost:3306 utente@server_remoto

Ora puoi connetterti a MySQL su localhost:3306 usando un client locale.

Navigazione Web Sicura Tramite Proxy SOCKS

Usa un tunnel SSH per creare un proxy SOCKS e navigare su Internet in modo sicuro:

ssh -D 8080 utente@server_remoto

Configura il tuo browser per utilizzare localhost:8080 come proxy SOCKS.

Accesso a una Piattaforma di Sviluppo Locale da Remoto

Se stai sviluppando un’applicazione web in locale e desideri mostrarla a un collega su un server remoto:

ssh -R 8080:localhost:3000 utente@server_remoto

Il tuo collega potrà accedere all’applicazione tramite http://server_remoto:8080.

Inoltro di una Porta per Accesso a Desktop Remoto

Accedi a un desktop remoto protetto:

ssh -L 5901:localhost:5901 utente@server_remoto

Connettiti al desktop remoto tramite un client VNC usando localhost:5901.

Accesso a una VPN Remota da una Macchina Locale

Se la tua VPN è configurata solo su un server remoto, puoi usare un tunnel per connettere la tua macchina locale alla VPN:

ssh -L 1194:localhost:1194 utente@server_remoto

Ora la tua macchina locale può accedere alla VPN tramite la porta 1194 locale

Conclusioni

Il tunneling SSH è una tecnica versatile e sicura per accedere a risorse remote e proteggere le comunicazioni di rete. Con pochi comandi e la comprensione dei parametri -L, -R, e -D, puoi configurare il tunnel per una varietà di applicazioni, migliorando la sicurezza e l’accessibilità dei tuoi servizi di rete. Speriamo che questo articolo ti sia stato utile per comprendere e implementare tunnel SSH su Linux.

Alessio Fattorini - Community Marketing Manager

Particolarmente attratto da tutto quello che aiuta ed incentiva le persone a lavorare e collaborare insieme.
In Nethesis creo community, racconto storie e lavoro con l'Open Source.
Community Strategist, Copywriter, Speaker internazionale e Linux Sysadmin

Back To Top