SSH通过SOCKS代理? (客户端= OpenSSH OS X)

我不确定这个问题是否最适合在这里ServerFault或超级用户。 从逻辑上思考它我认为这是一个系统pipe理员问题,所以我把它放在这里,如果mods认为它应该移动,然后道歉猜测错了!

无论如何 – 我有一个服务器异地,我被困在一个私人的IP,除了通过HTTP代理或SOCKS 4/5代理不能访问networking。 我正在运行OS X,我希望从terminal的ssh命令以某种方式通过这两个代理之一来到远程服务器。 远程服务器上的SSH端口是非标准的,但我怀疑这会有什么不同。

我知道这是一个古老的post,但我认为这个答案仍然有帮助:

你可以很容易地通过一个SOCKET代理与NetCat(NC)做到这一点。 在你的〜/ .ssh / config中,你只需要添加两行,一行指定你想要代理的主机,一行告诉它如何通过nc连接。 像这样:

〜/ .ssh / config 🙁在OSX上testing,也可以在Linux上运行)

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

将“PROXY_HOST”replace为正确的设置。

这会导致ssh,而不是直接打开到目标主机的TCP连接(在这个例子中,任何以“10.”开头的东西都可以是IP或主机名),运行带有指定选项的“nc”命令build立TCP连接,SSH从那里做rest。 非常方便。

“5”是SOCKS版本,“1080”是代理端口,“%h”SSH将用您在命令行中键入的主机replace,而“%p”SSH将用命令行中的端口replace22)。

是的,这可以做到。 看到这个网站的一个例子。

基本上你使用你的本地~/.ssh/config文件(或者/etc/ssh/ssh_config如果你需要系统范围的话)为需要通过代理去的主机指定一个ProxyCommand指令。

你也可以使用nc (OS X自带)而不是他们在该网站上提到的软件。

有关更多信息,请参阅ssh_config(5)nc(1)手册页。

有点迟,但请注意,您可以在SSH命令本身中使用-o标志来使用其他答案。 这对我很有用,因为我可能或可能不需要使用代理(取决于我在哪个办公室),所以我真的不想编辑我的SSHconfiguration文件。

 ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" [email protected]