spiegazione tunneling ssh


8

Ho una domanda per quanto riguarda il tunneling SSH. Ho letto questo articolo

Vorrei far funzionare l'inoltro X ed eseguire alcune applicazioni X a casa e visualizzarle su un sistema remoto:

 ssh -X -R 5555:localhost:22 user@remoteserver.com -N

Sul telecomando:

 ssh -X -p 5555 user@192.168.1.2

Quindi a casa:

 //configure sshd to listen on 5555
 ssh user@remoteserver.com
 //here run some app

Dovrebbe funzionare?


Per favore provalo invece di chiedere se avrebbe funzionato.
Wutaz,

Sì, è sempre meglio provare le cose e se non funziona chiedi perché.
slm

sembra che tu lo stia facendo all'indietro .. il "normale" è correre nel telecomando e visualizzarlo in locale. se vuoi visualizzarlo a distanza raccontaci della tua rete potrebbe essere semplice e non è nemmeno necessario ssh.
Skaperen,

Risposte:


9

Ho disegnato alcuni schizzi

La macchina, in cui viene digitato il comando ssh tunnel, è chiamata "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: connettiti con ssh a connectToHost, e inoltra tutti i tentativi di connessione al telecomando sourcePort per port onPortsulla macchina chiamata forwardToHost, che può essere raggiunta dalla tua macchina locale.

Il tuo esempio

Bene, se desideri solo far funzionare l'inoltro X, ad esempio eseguire alcune applicazioni X sul computer a casa e visualizzarle su un sistema remoto (chiamiamolo computer di lavoro, perché potrebbe essere sul posto di lavoro), allora potresti non serve affatto un tunnel ssh.

Avvia le applicazioni X senza tunnel

Puoi semplicemente ssh dal computer di lavoro al tuo computer di casa? In tal caso, quando si è seduti sul computer di lavoro e si desidera avviare un'applicazione X in esecuzione sul computer di casa ma visualizzata sul computer di lavoro , è necessario digitare (sul computer di lavoro):

ssh -X homeuser @ homecomputer firefox

Questo avvierà Firefox sul tuo computer di casa e lo visualizzerà sul computer in cui hai digitato questo comando, ad esempio il tuo computer di lavoro.

Il computer nascosto ha bisogno del tunnel

Questa è l' immagine numero 3 dei miei schizzi. Molte volte il computer di casa non è raggiungibile direttamente da Internet, perché è protetto da un firewall o nascosto attraverso NAT (da un router). Quindi puoi usare un tunnel.

Sul tuo computer di casa blu ( yourhost) digiti:

ssh -R 5555:localhost:22 remoteuser@remotehost

dov'è 5555la porta verde ed 22è la porta rosa nell'immagine.

Se ora sei al lavoro, a remotehost, e ti connetti alla porta verde 5555, la tua connessione viene incanalata / inoltrata alla porta rosa del tuo computer di casa localhost(cioè il tuo computer di casa blu stesso). Ora devi digitare sul tuo computer di lavoro:

ssh -X -p 5555 homeuser@localhost firefox

che avvierà firefox sul tuo computer di casa ( yourhost) e lo visualizzerà sul computer in cui hai digitato questo comando, ad esempio il tuo computer di lavoro ( remotehost).


1

È necessario specificare il display remoto che si desidera inoltrare. Sul telecomando:

DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

Per inoltrare il :0display.

Quindi in quella shell (ora in esecuzione sul tuo computer di casa), esegui:

echo "$DISPLAY"

per scoprire qual è il display inoltrato. Sarà qualcosa del genere localhost:10, il che significa che è necessario eseguire una connessione TCP sulla porta 6010 per connettersi al display :0sul computer remoto (che :0significa connettersi a un socket di dominio Unix in qualcosa del genere /tmp/.X11-unix)

Quindi, per un'applicazione sul tuo computer da visualizzare sul display del server remoto, è solo una cosa da dire loro di usare localhost:10:

DISPLAY=localhost:10 xlogo

per esempio.

Nota che è un tunnel sopra un tunnel.

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.