Ssh

通過 SOCKS 代理 SSH?(客戶端 = OpenSSH OS X)

  • May 9, 2017

我不確定這個問題是最適合在 ServerFault 上還是在 SuperUser 上。從邏輯上考慮我認為這是一個系統管理員問題,所以我把它放在這裡,如果模組認為它應該移動,那麼為猜錯道歉!

無論如何 - 我有一個異地伺服器,我被困在一個私有 IP 上,除了通過 HTTP 代理或 SOCKS 4/5 代理之外,無法訪問網路。我正在執行 OS X,我希望來自終端的 ssh 命令以某種方式通過這兩個代理之一來訪問遠端伺服器。遠端伺服器上的 SSH 埠是非標準的,儘管我懷疑這會產生很大的不同。

我知道這是一篇古老的文章,但我認為這個答案仍然會有所幫助:

您可以通過帶有 NetCat (nc) 的 SOCKS 代理輕鬆完成此操作。在您的 ~/.ssh/config 中,您只需添加兩行,一行指定您要代理的主機,另一行告訴它如何通過 nc 連接。像這樣:

**~/.ssh/config:(**在 OSX 上測試,應該也可以在 Linux 上執行)

Host 10.*
   ProxyCommand nc -X 5 -x PROXY_HOST:1080 %h %p

將“PROXY_HOST”替換為適合您的設置的內容。

這導致 ssh 不是直接打開到目標主機的 TCP 連接(在這種情況下,任何以“10.”開頭的東西 - 可以是 IP 或主機名),而是執行帶有指定選項的“nc”命令來實際建立 TCP 連接,SSH 從那裡完成其餘的工作。非常便利。

“5”是 SOCKS 版本,“1080”是代理埠,“%h”SSH 替換為您在命令行中鍵入的主機,“%p”SSH 替換為命令行中的埠(或預設22)。

引用自:https://serverfault.com/questions/315605