GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il tunneling SSH per accedere a server con restrizioni

Oltre all'invio di dati ssh, il protocollo ssh può incanalare altro traffico tra due host. I tunnel ssh più comuni sono remoti e locali.

Il tunneling SSH o il port forwarding SSH è un metodo per creare una connessione SSH crittografata tra un client e una macchina server attraverso la quale è possibile inoltrare le porte dei servizi.

Tunnel SSH locale con port forwarding

Puoi utilizzare un tunnel ssh locale quando vuoi raggiungere una risorsa a cui non puoi accedere direttamente, ma un server ssh a cui hai accesso può farlo. Ecco alcuni scenari.

Proxy al server remoto

Nell'immagine sopra, l'host blu non riesce a raggiungere http://192.168.0.3 ma può ssh a 192.168.0.2. Il seguente comando ssh eseguito sull'host blu consentirà all'host blu di raggiungere l'host rosso.

ssh -L 8080:192.168.0.3:80 [email protected]

Ora l'host blu può aprire un browser, vai su http://localhost:8080 , e sarà presentato con la pagina web ospitata su 192.168.0.3.

Port Forward locale

Nell'immagine sopra, l'host blu vuole connettersi all'host rosso sulla porta 80 ma c'è un firewall nel mezzo che lo nega. Poiché l'host blu può inviare un ssh all'host rosso, possiamo creare un tunnel ssh di port forwarding locale per accedere a quella porta.

Il comando sull'host blu sarà:

ssh -L 8080:192.168.0.2:80 [email protected]

Ora, quando l'host blu apre un browser e va a http://localhost:8080 potranno vedere tutto ciò che il server rosso ha sulla porta 80.

Sintassi di port forwarding locale

Questa sintassi per creare un tunnel di port forwarding ssh locale è questa:

ssh -L <LPORT>:<RHOST>:<RPORT> <GATEWAY>

Tunnel SSH remoto con port forwarding

In questo scenario, stiamo creando un tunnel ssh inverso. Qui possiamo avviare un tunnel ssh in una direzione, quindi utilizzare quel tunnel per creare un tunnel ssh nell'altra direzione. Questo può essere utile quando si rilascia un computer drone all'interno di una rete e si desidera che "telefoni a casa". Quindi, quando telefona a casa, puoi connetterti tramite il tunnel ssh stabilito.

Siamo sull'host verde e vogliamo passare all'host blu. Tuttavia, il firewall blocca direttamente questa connessione. Poiché l'host blu può inviare un ssh all'host verde, possiamo connetterci usando quello e quando l'host verde vuole tornare all'host blu, può percorrere questo tunnel precedentemente stabilito.

L'host blu avvia un tunnel ssh come questo:

ssh -R 2222:localhost:22 [email protected]

Questo apre la porta 2222 sull'host verde, che viene quindi inoltrata alla porta 22 sull'host blu. Quindi, se l'host verde dovesse inviare ssh a se stesso sulla porta 2222, raggiungerebbe l'host blu.

L'host verde ora può inviare ssh all'host blu in questo modo:

ssh -p 2222 [email protected]

Utilizzo dell'opzione -N

Quando utilizzi ssh, puoi specificare -N flag che dice a ssh che non è necessario inviare alcun comando sulla connessione ssh quando viene stabilita. Questa opzione viene spesso utilizzata durante la creazione di tunnel poiché spesso non è necessario ricevere effettivamente un prompt.

Autossh

Il autossh il comando viene utilizzato per aggiungere persistenza ai tuoi tunnel. Il compito è verificare che la tua connessione ssh sia attiva e, in caso contrario, crearla.

Ecco un comando autossh che potresti riconoscere.

autossh -N -i /home/blueuser/.ssh/id_rsa -R 2222:localhost:22 [email protected]

Il -i /home/blueuser/.ssh/id_rsa l'opzione dice di utilizzare un certificato per autenticare questa connessione ssh.

Ora, quando il tuo tunnel si interrompe, proverà automaticamente a riconnettersi e continuerà a provare fino a quando non avrà successo. Per renderlo persistente attraverso un riavvio, aggiungi il comando ssh come cron job.


Linux
  1. Come utilizzare i protocolli SSH e SFTP sulla rete domestica

  2. Come configurare il tunneling SSH

  3. Come posso utilizzare SSH con un proxy SOCKS 5?

  4. Come scp tramite una macchina intermedia?

  5. accesso solo tunneling ssh

File host Linux:come modificarlo e utilizzarlo?

Come utilizzare SSH per connettersi a un server remoto

Come utilizzare una chiave SSH con utenti non root

Ssh:come funziona il tunneling Ssh inverso?

Come utilizzare Secure Shell Access (SSH) tramite PuTTY?

Come disabilitare il controllo della chiave host SSH in Linux