Tunnel di calzini SSH Reverse


26

ssh -D può creare una porta per i calzini sul computer locale, che passa il traffico al telecomando, quindi ad altri luoghi.

ssh -L port:host:hostport, ascolta la porta sul computer locale, passa il traffico a "host: hostport" dal punto di vista del computer remoto.

ssh -R port:host:hostportè la controparte di ssh -L, che ascolta la porta sul computer remoto e passa il traffico a "host: hostport" dal punto di vista del computer locale.

Ma qual è la controparte di ssh -D, ad esempio, come aprire una porta di calzini sulla macchina remota, che passerà il traffico al locale, quindi ad altri luoghi?


1
la domanda perde valore perché hai accettato una risposta che non funziona e non può funzionare. Questa (che chi ha risposto menzionato nel commento) fa però stackoverflow.com/questions/842021/...
barlop

Risposte:


12

Con -D& -Lhai un modo per comunicare in entrambi i modi tra le due macchine.

Così...

  • Dal computer locale, utilizzare -Rper creare una porta di ascolto sul computer remoto puntata sulla sshd del computer locale.
  • Utilizzare -Dsul computer remoto, puntato sulla porta creata sopra.

"Penso" compilando il seguito lo farà funzionare ...

ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"

' remotehost', ' remoteport' & ' localport' in quanto sopra devono essere modificati. Un proxy di calze verrà formato su 9050.


Oh, sembra che questo sia stato chiesto su SO: stackoverflow.com/questions/842021/… L' unica risposta è la stessa idea. Sono sicuro che funzionerà ;-) EDIT - sì, quello era più giusto del mio. Ho rattoppato il mio.
Caro il

In realtà, ho usato questo metodo indiretto nella mia situazione. Ma nella situazione del mio amico, non aveva il privilegio di root, quindi non può avere un servizio sshd, ha solo il client OpenSSH. Quindi voglio capire che esiste un metodo diretto, ma OpenSSH non sembra ... Grazie lo stesso
Berry,

1
@barlop e questo non funzionerà perché supponiamo che tu esegua l'eseguibile ssh dalla 10.0.0.10 la -R dice di inoltrare alla 10.0.0.10:9050 Ma il server SOCKS è in esecuzione sulla 10.0.0.5
barlop

1
@PriceChild hai effettivamente testato il tuo comando?
barlop

5
-1 Non ti sei preoccupato di testarlo e il tuo comando è completamente sbagliato. Hai provato a farlo come l'altra risposta SO ma non ci sei riuscito. SSHing da A a B, quello a cui ti colleghi ha ssh -D ascolta su A. Il tuo lo ha ascolta su B. Il tuo è sbagliato. Hai il proxy SOCKS in ascolto sul lato in ascolto.
barlop

14

Può essere realizzato in modo trasparente con questo frammento in ~ / .ssh / config:

Host sockstunnel
    ProxyCommand ssh -D 3128 localhost nc -q 1 localhost 22

Host target
    RemoteForward 3128 localhost:3128
    ProxyCommand ssh -W target:22 sockstunnel

Dettagli

Vogliamo un DynamicForward inverso. Questo si ottiene usando due comandi ssh:

  • ssh -D 3128 localhost
  • ssh -R 3128:localhost:3128 target

In questo modo la destinazione ha un tunnel SOCKS per il client SSH.

Quello che ho fatto è stato usare il modo classico di concatenare ssh per raggiungere un target remoto attraverso host intermedi in modo che la creazione del tunnel SOCKS sia gestita in modo trasparente durante l'accesso al target. Il primo trucco ProxyCommand + nc è obbligatorio perché -W implica ClearAllForwardings.


1
questo vale una medaglia d'oro.
Dakatine,

Potresti fornire una spiegazione più dettagliata di ciò che fanno i tuoi comandi?
alonso s,

3

Non è possibile fornire un tunnel di calze inverse con OpenSSH, quindi è necessario eseguire il comando ssh che fornisce il proxy socks sulla macchina "remota".

Se la macchina remota non è in grado di accedere a ssh nella macchina locale, creare prima una connessione ssh da locale a remoto che inoltra la porta 22 ad es. 2222. Quindi la macchina remota può ssh nella macchina locale sulla porta 2222.


2
local$ ssh -R 1080 remote
remote$ curl --socks5 localhost https://example.com

da OpenSSH 7.6

ssh (1): aggiunge il supporto per l'inoltro dinamico inverso. In questa modalità, ssh fungerà da proxy SOCKS4 / 5 e inoltrerà le connessioni alle destinazioni richieste dal client SOCKS remoto. Questa modalità è richiesta utilizzando la sintassi estesa per le opzioni -R e RemoteForward e, poiché è implementata esclusivamente sul client, non richiede che il server sia aggiornato per essere supportato.

https://www.openssh.com/txt/release-7.6


Potete fornire un riferimento per questo?
Scott,

A proposito, c'è un bug in openssh-client 8.0 in cui non è possibile scegliere un indirizzo bind con la porta ( ssh -R 127.0.0.3:1080 remote), attualmente è possibile associare un proxy SOCKS inverso solo a una porta.
Adam Katz,
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.