Per accedere a siti web non rag­giun­gi­bi­li dalla rete, è possibile uti­liz­za­re un tunnel SSH: invece di accedere al sito web di­ret­ta­men­te dalla propria rete, con il tunneling SSH si passa at­tra­ver­so un server SSH.

Server virtuali (VPS)
Affidati ai VPS e server di IONOS, il tuo partner digitale cer­ti­fi­ca­to ISO
  • 1 Gbps di larghezza di banda e traffico il­li­mi­ta­to
  • Di­spo­ni­bi­li­tà del 99,99% e cer­ti­fi­ca­zio­ne ISO
  • As­si­sten­za 24/7 e con­su­len­te personale

Cos’è esat­ta­men­te un tunnel SSH?

Si può im­ma­gi­na­re un tunnel SSH proprio come un vero tunnel, come una con­nes­sio­ne tra due punti. Il primo di questi punti, il punto di partenza per così dire, è un computer che nor­mal­men­te si trova in una rete non protetta. La de­sti­na­zio­ne del tunnel è un server o un indirizzo di rete a cui non si può o non si vuole accedere dalla propria rete. Un tunnel SSH funziona come una con­nes­sio­ne tra diversi server e collega le porte TCP di due computer tra loro. In linea di principio, qualsiasi porta TCP può essere inoltrata con il tunneling SSH. Pertanto, questo processo è noto anche come port for­war­ding o inoltro della porta.

Potete uti­liz­za­re qualsiasi server come server SSH. Per esempio, si può usare anche un server SSH sul Raspberry Pi.

Consiglio

Non avete ancora trovato un server adatto? Su IONOS trovate il server cloud giusto per ogni occasione.

Ma cosa “trasporta” esat­ta­men­te un tunnel SSH? At­tra­ver­so di esso, alcuni pro­to­col­li TCP possono essere uti­liz­za­ti in modo sicuro. Questo include, ad esempio, HTTP. Anche SMTP, un im­por­tan­te pro­to­col­lo per l’invio di e-mail, utilizza il tunneling SSH. Quindi SSH ga­ran­ti­sce la sicurezza dei dati trasmessi nel tunnel.

A cosa servono i tunnel SSH?

Esistono vari scenari ap­pli­ca­ti­vi per l’inoltro delle porte tramite Secure Shell. Nella maggior parte dei casi, il tunnel SSH viene uti­liz­za­to per stabilire una con­nes­sio­ne crit­to­gra­fa­ta tra un computer locale, il localhost e un computer remoto. At­tra­ver­so questa rete virtuale, è possibile eliminare alcune re­stri­zio­ni di accesso ai siti web. In questo modo si ha l’im­pres­sio­ne di essere nella rete a cui si accede solo con un tunnel SSH. Sebbene questo tipo di ap­pli­ca­zio­ne abbia delle so­mi­glian­ze con una rete privata virtuale (VPN), le due non vanno confuse.

Se tra­spor­ta­te dati da servizi che uti­liz­za­no un pro­to­col­lo non crit­to­gra­fa­to, potete uti­liz­za­re il tunneling SSH per crit­to­gra­fa­re comunque il traffico di dati. A questo scopo si utilizza il co­sid­det­to SSH File Transfer Protocol, ab­bre­via­to in SFTP. Un tunnel SSH offre anche una maggiore sicurezza quando si naviga su reti estranee, ad esempio negli hotel. Per una sicurezza par­ti­co­lar­men­te elevata, potete fare af­fi­da­men­to su chiavi SSH per la con­nes­sio­ne di rete, che uti­liz­za­no una crit­to­gra­fia a chiave pubblica.

Anche il port for­war­ding è una tecnica che le/gli hacker amano uti­liz­za­re. Con il tunneling SSH è possibile creare backdoor nelle reti interne che con­sen­to­no agli ag­gres­so­ri di accedere ai dati interni fa­cil­men­te.

Consiglio

De­si­de­ra­te uti­liz­za­re i vantaggi di SSH anche per il vostro sito web? Il pacchetto web hosting di IONOS include un cer­ti­fi­ca­to SSL e non vi fa mancare proprio nulla! Se volete sem­pli­ce­men­te ag­gior­na­re il vostro sito web, IONOS vi offre la pos­si­bi­li­tà di farlo con un cer­ti­fi­ca­to SSL. Per una maggiore sicurezza per il vostro sito web, ad esempio at­tra­ver­so l’au­ten­ti­ca­zio­ne a due fattori, uti­liz­za­te lo strumento Domain Guard di IONOS.

Uti­liz­za­re un tunnel SSH su Linux

Esistono diversi metodi per impostare un tunnel SSH.

Inoltro della porta locale

Pro­ba­bil­men­te il metodo più uti­liz­za­to è il co­sid­det­to port for­war­ding locale. Qui potete accedere alle risorse della rete locale dal vostro computer inol­tran­do una porta del computer locale a una porta del server SSH. Questa viene a sua volta inoltrata a una porta del computer di de­sti­na­zio­ne.

Per impostare il port for­war­ding locale, uti­liz­za­te il seguente comando da terminale nei sistemi operativi basati su Unix, come Linux o macOS:

ssh -L porta_locale: indirizzo_remoto: porta_remota username@server.com

Per prima cosa è ne­ces­sa­rio de­ter­mi­na­re la porta che si desidera inoltrare (porta_locale). A tale scopo è di­spo­ni­bi­le qualsiasi numero di porta superiore a 1024. Solo la root ha accesso alle porte con numeri di porta più piccoli, in quanto sono porte pri­vi­le­gia­te. Suc­ces­si­va­men­te, dovete inserire l’indirizzo IP del server di de­sti­na­zio­ne (indirizzo_remoto) e i dati di accesso (porta_remota).

Il tutto diventa più chiaro con un esempio: de­si­de­ra­te con­net­ter­vi a un server in ufficio, che si trova all’indirizzo 123.234.1.111 nella rete aziendale. Potete anche accedere al server SSH del vostro ufficio con ssh.test.com. Il vostro nome utente è “testuser”. Il comando per impostare il tunnel SSH per la porta 1234 è il seguente:

ssh -L 8888: 123.234.1.111: 1234 Testuser@ssh.test.com

Dopo aver eseguito questo comando, potete accedere al server dell’ufficio tramite la porta 8888. Se supporta anche l’accesso al web, potete accedervi anche tramite http://localhost:8888. Il traffico di dati inviato alla porta 8888 del computer viene ora in­stra­da­to at­tra­ver­so il tunnel SSH alla porta 1234 del computer di de­sti­na­zio­ne.

Inoltro remoto delle porte

La con­tro­par­te del port for­war­ding locale è il co­sid­det­to port for­war­ding remoto. Qui in­stra­da­te una porta del server SSH a una porta del computer client. In questo modo è possibile stabilire una con­nes­sio­ne con il computer di de­sti­na­zio­ne, ad esempio il computer locale. Questa forma di port for­war­ding viene uti­liz­za­ta so­prat­tut­to per con­sen­ti­re a persone esterne di accedere a servizi interni. Il comando per impostare un tunnel SSH remoto nel terminale è il seguente:

ssh -R porta_remota: indirizzo_destinazione: porta_destinazione user@indirizzo_server_ssh

Ad esempio, se de­si­de­ra­te ascoltare la porta con il numero 8080 e inviare i dati alla porta 3000 del computer locale, il comando si presenta come segue:

ssh -R 8080: 127.0.0.1:3000 user@remote.host

Nell’esempio pre­ce­den­te, l’indirizzo del server SSH è remote.host. L’accesso esterno ai dati che state in­stra­dan­do tramite tunnel può ora essere ef­fet­tua­to in un browser ri­chia­man­do questo stesso indirizzo seguito dalla porta spe­ci­fi­ca­ta in pre­ce­den­za:

remote.host:8080

Se ri­scon­tra­te problemi nell’im­po­sta­zio­ne del port for­war­ding remoto, è possibile che dobbiate mo­di­fi­ca­re la con­fi­gu­ra­zio­ne del server SSH. Per im­po­sta­zio­ne pre­de­fi­ni­ta, il port for­war­ding remoto è di­sa­bi­li­ta­to. Potete mo­di­fi­ca­re questa im­po­sta­zio­ne attivando la con­fi­gu­ra­zio­ne Ga­teway­Ports nel file di con­fi­gu­ra­zio­ne del server SSH. A tal fine, aprite il file e impostate la direttiva Ga­teway­Ports su “yes”.

Inoltro dinamico delle porte

Un terzo modo per uti­liz­za­re i tunnel SSH è il port for­war­ding dinamico. Ciò consente di uti­liz­za­re un socket sul computer locale che agisce come una sorta di proxy SOCKS. Tutte le ap­pli­ca­zio­ni che uti­liz­za­no il proxy SOCKS si collegano al server SSH in questo modo e in­stra­da­no tutto il traffico at­tra­ver­so il tunnel. Un uso comune di questo tipo di port for­war­ding è il tunneling del traffico di un browser web.

Per impostare il port for­war­ding dinamico, uti­liz­za­te un comando da terminale secondo il seguente schema:

ssh -D [indirizzo_ip_locale:]porta_locale user@indirizzo_server_ssh

Se non spe­ci­fi­ca­te un indirizzo IP locale, viene se­le­zio­na­to au­to­ma­ti­ca­men­te l’indirizzo IP 127.0.0.1, cioè il localhost. Ad esempio, se de­si­de­ra­te impostare un tunnel SOCKS per la porta 9090, il comando per un server con l’indirizzo remote.host è il seguente:

ssh -D 9090 -N -f user@remote.host

Dopo aver impostato il proxy SOCKS, dovete con­fi­gu­ra­re di con­se­guen­za le ap­pli­ca­zio­ni che devono uti­liz­za­re il proxy.

Uti­liz­za­re un tunnel SSH su Windows

I tunnel SSH possono essere impostati anche su Windows. Poiché il terminale è meno im­por­tan­te su questo sistema operativo, esistono strumenti pratici con una propria in­ter­fac­cia grafica, ad esempio PuTTY. In questo modo l’im­po­sta­zio­ne di un tunnel SSH è un gioco da ragazzi.

Dopo aver scaricato e in­stal­la­to PuTTY, apritelo. Nel menu di avvio, inserite l’indirizzo IP del server SSH a cui de­si­de­ra­te con­net­ter­vi alla voce “Hostname”. Quindi navigate fino a “Con­nec­tion/SSH/Tunnels”. Qui potete spe­ci­fi­ca­re la porta di origine e di de­sti­na­zio­ne nei campi “Source Port” e “De­sti­na­tion”. Potete quindi stabilire la con­nes­sio­ne tramite il pulsante “Open” e accedere alla porta inoltrata nel browser come di consueto tramite 127.0.0.1:numero_porta.

Tunnel SSH inverso

Per accedere ai computer con indirizzi IP privati, è ne­ces­sa­rio un tunnel SSH inverso. Il computer interno, che non può essere raggiunto dall’esterno, deve stabilire un tunnel SSH inverso verso un computer esterno. A dif­fe­ren­za dei tunnel SSH già pre­sen­ta­ti, questo tunnel deve con­sen­ti­re anche le con­nes­sio­ni da computer esterni al computer interno.

Il seguente comando viene uti­liz­za­to per impostare un tunnel SSH inverso:

ssh -Nf -R 2222:localhost:22 user@computer.esterno

Il computer esterno può essere collegato al computer interno tramite questo comando:

ssh localhost -p 2222
Vai al menu prin­ci­pa­le