Proxy
使用 ProxyCommand 通過多個主機進行 SSH?
我在家裡的電腦上的 ~/.ssh/config 中有一個條目,如下所示:
host foo bar ProxyCommand ssh -x -a -q gateway.example.com nc %h 22
gateway.example.com
連接到公共 Internet 和內部網路的工作伺服器在哪裡。網關框使用 /etc/hosts 中的條目解析 foo 和 bar。我的問題是我需要到達位於
foo
. 讓我們稱之為“baz”。“baz”主機位於 foo 連接到的另一個專用網路上,但不是“網關”連接到的專用網路。我試過用這個:
host baz ProxyCommand ssh -x -a -q gateway/example.com ssh foo nc %h 22
但這不起作用,而且我有點超出我的深度。我該怎麼做呢?
我認為這無關緊要,但我在 Ubuntu 10 中這樣做。
簡單的。
假設以下網路設置:
您應該能夠使用看起來像這樣的 ~/.ssh/config 文件:
host foo bar ProxyCommand ssh -x -a -q gateway.example.com nc %h 22 host baz ProxyCommand ssh -x -a -q foo nc %h 22
這裡的想法是您的 SSH確實知道如何到達“foo”,因此那裡的 SSH 會成功。從那裡,你可以“nc”到 baz。如果“baz”旁邊的內部專用網路上還有其他主機,您可以將它們添加到“host baz”行。
在比 5.4 更新的 OpenSSH 版本中(此時都應該如此),您可以使用
-W
命令而不是 exec 來執行外部nc
命令,當然您可以將選項打包在一起:host foo bar ProxyCommand ssh -xaqW%h:22 gateway.example.com host baz ProxyCommand ssh -xaqW%h:22 foo
在這兩種情況下,這都將主機“foo”視為“baz”的網關,就像“gateway”是“foo”的網關一樣。
清除?