2013-10-03 208 views
16

我不知道我在這裏做什麼,所以請記住,如果你能幫助我!通過代理連接SSH

我想通過代理連接到我的虛擬服務器,但無法連接,它只是掛起。我假設這是因爲它沒有通過我們的代理。

我在家裏嘗試過完全一樣的東西,它完美的作品。我在使用終端連接的OSX上運行。

任何人都可以告訴我如何通過代理與SSH?

+0

你目前正在嘗試通過代理連接? –

+2

您應該在ServerFault或SuperUser中提問。另外,你會得到更好的迴應。 –

+1

接受答案請 – Lupocci

回答

13

如果您的SSH代理連接經常使用,您不必每次都將它們作爲參數傳遞。您可以添加以下行到~/.ssh/config

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

然後連接使用

ssh foobar.example.com 

來源:

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

+0

我試過,但沒有工作。請注意,我並不完全確定需要放入什麼內容,但它的內容類似Host 159.23.191.23 ProxyCommand nc -x connect -x 10.3.50.01:22%h%p ServerAliveInterval。是對的嗎? – bencarter78

+0

我只是想補充一點,這個解決方案對我來說確實很完美。我目前的工作場所部署HTTP代理,並且我簡單地用IP代替'proxyhost'(不添加模式!)和'proxyport' - 在這種情況下 - 8080. – Pit

+1

這個答案只能告訴別人你可以使用的命令傳遞已經(或可以被定義)在它的配置文件中,但是你沒有明確地寫它到一個文件。您可以將參數傳遞給ssh connect命令。 – erm3nda

27

這裏是如何做到理查德·克里斯滕森的回答作爲一個內膽,無需編輯文件(用您自己的設置替換大寫,PROXYPORT經常是80):

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

您可以使用SCP一樣-o ...選項爲好,看到https://superuser.com/a/752621/39364

如果你得到這個在OS X:

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

它可能是你不小心使用自制netcat版本(你可以通過執行which -a nc命令 - /usr/bin/nc應該首先列出)。如果有兩個,那麼一種方法是指定您想要的NC的完整路徑,如ProxyCommand=/usr/bin/nc ...

+4

我使用arch linux和gnu-netcat,'nc:invalid選項 - X'仍然存在。解決這個問題的方法是用openbsd-netcat替換gnu-netcat。有關詳細信息,請參閱https://pagekite.net/wiki/Howto/SshOverPageKite/#wrongnetcat。這兩個版本可能相互衝突。 – Han

+1

這很好,應該是被接受的答案。 – gladed

+1

有一點點話題,但也可以通過這個連接打開一個隧道(刪除所有'<' and '>'並保持原樣'localhost'):ssh -l <​​final_destination_user> -L :localhost:< final_destination> -o「ProxyCommand = nc -X connect -x %h%p」 – Pascal

6

@rogerdpack 爲Windows平臺它是真的很難找到-X(HTTP_PROXY)一個nc.exe,但是,我發現NC可以通過NCAT更換,完整的例子如下:

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 

和NCAT與--proxy可以做一個完美的作品

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

如何添加一些信息關於這是如何工作的?它在LQP中顯示 – fedorqui

0

在我來說,因爲我已經在路上跳主機或堡壘主機,並且由於這些堡壘節點上的簽名已經改變,因爲他們導入known_hosts文件,我只需要刪除這些條目/行s從以下文件:

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

從上面的文件,刪除指向堡壘主機的那些行。