2013-10-03 16 views
16

Non ho idea di cosa sto facendo qui, quindi tienilo a mente se puoi aiutarmi!Connessione con SSH tramite un proxy

Sto provando a collegarmi al mio server virtuale tramite un proxy ma non riesco a connettermi, semplicemente si blocca. Presumo che questo sia perché non passa attraverso il nostro proxy.

Ho provato esattamente la stessa cosa a casa e funziona perfettamente. Sono su OSX in esecuzione utilizzando Terminal per connettersi.

Qualcuno può indicarmi come posso passare il proxy con SSH?

+0

In che modo si sta tentando di connettersi tramite il proxy? –

+2

Si dovrebbe chiedere questo in ServerFault o SuperUser. Inoltre, otterrai una risposta molto migliore. –

+1

ACCETTARE la risposta per favore – Lupocci

risposta

13

Se la connessione del proxy SSH verrà utilizzata spesso, non è necessario passarli ogni volta come parametri. è possibile aggiungere le seguenti righe ~/.ssh/config

Host foobar.example.com 
    ProxyCommand   nc -X connect -x proxyhost:proxyport %h %p 
    ServerAliveInterval 10 

poi di collegare l'uso

ssh foobar.example.com 

Fonte:

http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html

+0

ho provato, ma non ha funzionato.badate che non ero esattamente sicuro di cosa avessi bisogno di inserire ma è andato qualcosa come Host 159.23.191.23 ProxyCommand nc -x connect -x 10.3.50.01:22% h% p ServerAliveInterval. è giusto? – bencarter78

+0

Volevo solo aggiungere che questa soluzione ha funzionato perfettamente per me. Il mio attuale luogo di lavoro distribuisce proxy HTTP e ho semplicemente sostituito 'proxyhost' dall'IP (aggiungendo nessuno schema!) E il' proxyport' da - in questo caso - 8080. – Pit

+1

Questa risposta può solo dire a qualcuno che i comandi che puoi pass sono già (o possono essere definiti) nel suo file di configurazione, ma non è necessario scriverlo esplicitamente su un file. Puoi semplicemente passare l'argomento al comando ssh connect. – erm3nda

27

Ecco come fare la risposta di Richard Christensen come un one-liner, non è necessario modificare i file (sostituire le maiuscole con le proprie impostazioni, PROXYPORT è spesso 80):

ssh [email protected]_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p" 

È possibile utilizzare la stessa opzione -o ... per SCP così, vedi https://superuser.com/a/752621/39364

Se si ottiene questo in OS X:

nc: invalid option -- X 
Try `nc --help' for more information. 

può essere che si sta utilizzando per sbaglio l'homebrew versione di netcat (puoi vedere facendo un comando which -a nc-- prima dovrebbe essere elencato /usr/bin/nc). Se ci sono due poi un modo è quello di specificare il percorso completo del NC che si desidera, come ProxyCommand=/usr/bin/nc ...

+4

Io uso arch linux con gnu-netcat e l'opzione 'nc: invalid - X' esiste ancora. La soluzione per questo problema è sostituire gnu-netcat con openbsd-netcat. Vedi https://pagekite.net/wiki/Howto/SshOverPageKite/#wrongnetcat per i dettagli. Queste due versioni probabilmente sono in conflitto tra loro. – Han

+1

Funziona alla grande e dovrebbe essere la risposta accettata. – gladed

+1

Un po 'fuori tema, ma si può anche aprire un tunnel attraverso questa connessione (rimuovere tutto' <' and '> 'e mantenere' localhost 'così com'è): ssh -l -L : localhost: < final_destination> -o "ProxyCommand = nc -X connect -x : % h% p" – Pascal

6

@rogerdpack per la piattaforma Windows è davvero difficile trovare un nc.exe con -X (http_proxy), però, ho trovato nc può essere sostituito da NCAT, piena esempio come segue:

Host github.com 
    HostName github.com 
     #ProxyCommand nc -X connect -x 127.0.0.1:1080 %h %p 
     ProxyCommand ncat --proxy 127.0.0.1:1080 %h %p 
    User git 
    Port 22 
    IdentityFile D:\Users\Administrator\.ssh\github_key 

e NCAT con --proxy può fare un lavoro perfetto

2
$ which nc 
/bin/nc 

$ rpm -qf /bin/nc 
nmap-ncat-7.40-7.fc26.x86_64 

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> %h %p" [email protected] 

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" [email protected] 
+0

ssh -o "ProxyCommand nc --proxy % h% p" user @ host –

+0

per quanto riguarda l'aggiunta di alcune informazioni su come funziona? Ha mostrato nel LQP – fedorqui

0

Nel mio caso da quando ho avuto una serie di salto o un host Bastion sulla strada, e perché le firme su questi nodi bastione era cambiato da quando sono stati importati in file known_hosts, ho solo bisogno di cancellare quelle voci/riga s dal seguente file:

/Users/a.abdi-kelishami/.ssh/known_hosts 

Dal file precedente, eliminare quelle linee che si riferiscono agli host del bastione.