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

Bar*_*t B 11 ssh proxy mac-osx

我不确定这个问题是否最适合在 ServerFault 上或在 SuperUser 上。从逻辑上考虑,我认为这是一个系统管理员问题,所以我把它放在这里,如果模组认为它应该移动,那么为猜错道歉!

无论如何 - 我有一个异地服务器,我被困在一个私有 IP 上,除了通过 HTTP 代理或 SOCKS 4/5 代理之外无法访问网络。我正在运行 OS X,我希望来自终端的 ssh 命令以某种方式通过这两个代理之一工作以到达远程服务器。远程服务器上的 SSH 端口是非标准的,但我怀疑这会有很大的不同。

vor*_*aq7 7

是的,这是可以做到的。有关一个示例,请参阅此站点

基本上,您使用本地~/.ssh/config文件(或者/etc/ssh/ssh_config如果您需要它是系统范围的)为ProxyCommand您需要通过代理访问的主机指定指令。

您也可以使用nc(随 OS X 一起提供)而不是他们在该站点上提到的软件。

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

  • @BartB“您一周前写的任何内容也可能是由其他人写的。” -- 这是一个编程公理,但它也适用于系统管理员和博主。 (2认同)

bgp*_*bgp 5

我知道这是一篇古老的帖子,但我认为这个答案仍然会有所帮助:

您可以通过带有 NetCat (nc) 的 SOCKS 代理轻松完成此操作。在您的 ~/.ssh/config 中,您只需添加两行,一行指定要代理的主机,另一行告诉它如何通过 nc 连接。像这样:

~/.ssh/config:(在 OSX 上测试过,也应该在 Linux 上工作)

Host 10.*
    ProxyCommand nc -X 5 -x PROXY_HOST:1080 %h %p
Run Code Online (Sandbox Code Playgroud)

将“PROXY_HOST”替换为适合您的设置的内容。

这会导致 ssh,而不是直接打开到目标主机的 TCP 连接(在这种情况下,任何以“10”开头的东西。 - 可以是 IP 或主机名),运行带有指定选项的“nc”命令来实际建立 TCP 连接,然后 SSH 从那里完成剩下的工作。非常便利。

"5" 是 SOCKS 版本,"1080" 是代理端口,"%h" SSH 替换为您在命令行中键入的主机,"%p" SSH 替换为命令行中的端口(或默认22)。