Porta tunnel sicura tramite host intermedio


23

Sto cercando di instradare un porto per VNC a casa mia qui. Devo saltare su un singolo host per poi saltare alla mia vera macchina da lavoro.

  • sittinghere sarà la mia macchina di casa locale
  • hopper sarà dal luppolo intermedio che devo fare
  • overthere sarà la macchina di lavoro remota

Posso farlo su SSH nella mia macchina di lavoro:

ssh -t hopper "ssh -t overthere"

Vorrei utilizzare il port forwarding per inoltrare la porta remota 5900 overtherealla porta locale 5900 su sittinghere. Tuttavia, preferirei essere in grado di farlo senza hoppercollegarsi apertamente a una porta poiché chiunque su quella macchina sarebbe in grado di collegarsi alla mia connessione VNC.

Esiste un modo per inoltrare quella porta al mio computer locale in modo sicuro senza che nessuno possa accedervi hopper?


Quale client VNC stai usando?
slm

Risposte:


18

Utilizzando la capacità nativa di SSH di inoltrare le porte. Da sittinghereeseguire:

 ssh -v -N -L 5900:overthere:5900 user@hopper

Puntare il client VNC su localhost:5900e il traffico verrà trasferito overthere:5900attraverso la connessione SSH stabilitahopper


1
AFAIK, questa soluzione non ti aiuterà se 5900 è associato solo all'interfaccia locale (127.0.0.1), come accade al tunnel hopper, e quindi hopperinoltra tutto il traffico a overthere:5900. Se overthere:5900sta ascoltando 0.0.0.0o l'interfaccia data, allora funzionerà, ma non se sta ascoltando 127.0.0.1.
Naftuli Kay,

18

Ho finito per usare alcuni ~/.ssh/confighack SSH per far sì che ciò accadesse:

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

Ciò che fa è che quando provo a connettermi a ssh overthereda sittinghere, si connette hoppere quindi inoltra la connessione SSH alla porta 22 su overthere(cioè: SSH su overthere).

Questo ha alcuni effetti collaterali fantastici:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

Tutto funziona alla grande e, per quanto ne so, il 5900 non è aperto hopper, ma solo inoltrato direttamente da overtherea sittinghere.


Per inciso, avrei dovuto chiedere questo nei commenti prima, ma la soluzione in cui ti sei imbattuto è appena uscita dalla pagina man di x11nvc Cool. Mi dispiace non ho pensato di chiedere quale server VNC stavi utilizzando.
slm

Questo mi spaventa, ma sicuramente funziona!
Dale Anderson,

1
In alcune distro Linux (ad esempio Ubuntu 14.04) netcat-openbsd è installato di default. In questo caso questo hack potrebbe non funzionare. Per risolvere questo problema, devi prima installare il pacchetto netcat-traditional ( apt-get install netcat-traditional -y). Quindi dovresti specificare esplicitamente il nctipo nel file di configurazione (sostituendolo nccon nc.traditional).
VeLKerr,

@Naftuli: Davvero fantastico!
andato

1
@AlexanderPozdneev netcat .
taylorthurlow,

1

È possibile inoltrare una porta da sittingherea overthere's porta SSH attraverso hopper. Quindi è possibile utilizzare quella porta per raggiungere overtheredirettamente da sittinghere. In questa seconda sessione SSH puoi inoltrare VNC o qualunque altra porta ti piaccia mentre hoppervede solo una sessione SSH crittografata.

Prima sessione SSH:

ssh -f -N -L 7022:overthere:22 hopper

Ora dì al client SSH come può raggiungere overthereaggiungendo questa configurazione a ~/.ssh/configonsittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

Seconda sessione SSH:

ssh -f -N -L 5900:localhost:5900 overthere

O solo una normale sessione SSH interattiva senza il tunnel della porta VNC:

ssh overthere

Se non vuoi preoccuparti di aggiungere linee ~/.ssh/config, puoi comunque dirgli come collegarti overtheredalla riga di comando:

ssh -p 7022 hopper

... ma senza HostKeyAliasSSH non verificherà overtherecorrettamente l'impronta digitale della chiave.

Tutte le righe di comando devono essere eseguite da sittinghere.

Per inciso, penso che probabilmente non è necessario utilizzare sshl' -topzione di.


1

Innanzitutto collegare la tramoggia mentre si crea un tunnel tra lavoratore e PC di casa.

ssh -f ismail@hopper -L 2222:overthere:22 -N

quindi fai ssh ro laggiù con il tunnel vnc

ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900

Ora puoi connetterti con VNC. A proposito, cambia la configurazione di vnc per ascoltare localhost


0

Se si utilizza il client VNC vncviewerdalla riga di comando, è possibile utilizzare l' -viaopzione per indicare al tunnel di attraversare auser@host prima di connettersi al server VNC di altri host.

Esempio

$ vncviewer -via user@host localhost:0

È inoltre possibile utilizzare vinagreper connettersi tramite un tunnel SSH in questo modo tramite la GUI. Per fare ciò, imposta la tua connessione in modo simile tramite la finestra di dialogo della connessione in vinagre:

              ss # 1

Ciò comporterà la connessione, tunnel attraverso l'host tunnel SSH.

    ss # 2

Riferimenti


0

Anche il seguente comando dovrebbe funzionare perfettamente

ssh -f -N -J hopper overthere -L 5900:localhost:5900

È stato testato con un parametro aggiuntivo per connettere il server PostgreSQL postgres-serveralla porta ( -pswitch) personalizzata e anche utilizzando un nome utente personalizzato.

ssh -f -N -J user1@jumphost -p 2222 user2@postgres-server -L 5432:localhost:5432

Come puoi vedere, questa soluzione è semplice e non richiede modifiche alla configurazione di ssh o passaggi intermedi.

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.