Comprensione dei tunnel SSH


15

Ho un server Linux (Ubuntu) a cui ho accesso root solo tramite ssh (porta 22). Su quel server c'è un database MySQL in ascolto sulla porta 3306. È possibile usare putty (sulla mia macchina) e tunneling (sulla macchina linux) per creare un tunnel da una porta locale sulla mia macchina (diciamo 4000), al server Linux sulla porta 22 e quindi dal server a se stesso sulla porta 3306?

Risposte:


20

Ho disegnato alcuni schizzi

La macchina, in cui viene digitato il comando ssh tunnel (o nel tuo caso: viene avviato Putty con tunneling) è chiamato "host" .

tunnel ssh a partire da locale


tunnel ssh a partire da remoto

introduzione

  1. Locale: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostsignifica: connettersi con ssh a connectToHost, e inoltrare tutti i tentativi di connessione alla porta locale sulla macchina chiamata , che può essere raggiunta dalla macchina.sourcePortonPortforwardToHostconnectToHost

  2. a distanza: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostsignifica: connettersi con ssh a connectToHost, e inoltrare tutti i tentativi di connessione al telecomando sourcePort per port onPortsulla macchina chiamata forwardToHost, che può essere raggiunta dalla macchina locale.

Il tuo esempio

La prima immagine rappresenta la tua situazione. La casella blu chiamata your hostè la tua macchina Windows da cui avvii Putty sul tuo server Ubuntu, chiamato remotehostnella mia immagine. Le connessioni alla porta verde (nel vostro caso il numero di porta 4000) vengono inoltrati alla porta di colore rosa MySQL 3306della localhostdella vostra macchina server Ubuntu (ad esempio il server di Ubuntu stesso).

Per installarlo con Putty

Avvia Putty e inserisci le tue normali impostazioni di connessione (nome host o indirizzo IP) Nella struttura a sinistra, vai a

Connessione → SSH → Tunnel

e creare un nuovo tunnel locale con la porta di origine 4000(123 nell'immagine) e la destinazione localhost:3306(localhost: 456 nell'immagine).

Non dimenticare di fare clic su Aggiungi .

Quindi tornare alla sessione e fare clic su Salva per conservare le impostazioni per la volta successiva. Ora puoi utilizzare la connessione salvata per accedere al tuo server e dopo aver effettuato correttamente l'accesso, ogni volta che ti connetti alla porta 4000 sul tuo host, ti collegherai effettivamente alla porta 3306 sul server Ubuntu.

creare tunnel in avanti con stucco


Molto bene, grazie per l'illustrazione. Apprezzo che tu abbia aggiunto tunnel di tipo "remoto", che non ho trattato nelle mie risposte.
Guss,

1
Questa risposta è fantastica
Mauricio Pasquier Juan,

2
Risposta fantastica e molto illustrativa +1
rkachach

1
Come questo abbia così pochi voti è un peccato.
Ryan Fisher,

1
Adoro questi schizzi. L'immagine vale più di mille parole.
qartal

16

La semplice risposta è sì, ma tieni presente che il tunnel è effettivamente avviato sul tuo computer. Il modo in cui funziona è che si crea una connessione SSH al server (che è sicura) e quindi si istruisce l'SSH ad ascoltare una porta dalla propria parte e inoltrare qualunque connessione entri - a una porta specifica su un indirizzo host specifico sul lato server. La destinazione del tunnel non deve necessariamente essere lo stesso server - può essere qualsiasi altro indirizzo valido, che - nel caso in cui non sia il server che esegue il server SSH stesso - vedrà la connessione in arrivo come se provenisse dal server SSH anziché dal tuo cliente.

Per configurarlo, apri la finestra di dialogo di configurazione di Putty, seleziona l'impostazione della connessione che usi normalmente per accedere al tuo server e fai clic su "carica" ​​(e non "apri"). Quindi, nella struttura a sinistra, vai a Connessione-> SSH-> Tunnel e crea un nuovo tunnel "locale" con la porta di origine 4000 e la destinazione "localhost: 3306" (perché l'indirizzo di destinazione è stato risolto sul server, dal punto di vista del server la porta MySQL è sul localhost). Quindi tornare alla "sessione" e fare clic su "Salva" per mantenere le impostazioni per la prossima volta. Ora puoi utilizzare la connessione salvata per accedere al tuo server e dopo aver eseguito correttamente l'accesso, ogni volta che ti connetti alla porta 4000 sul tuo computer, ti collegherai effettivamente alla porta 3306 sul server.

Se sei seriamente interessato ai tunnel e stai eseguendo un client MS-Windows, ti suggerisco di guardare Putty Tunnel Manager che usa Putty per impostare ed eseguire tunnel facilmente senza la necessità di avere una console putty aperta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.