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


11

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

无论如何-我有一个服务器不在现场,而且我只能使用私有IP,除非通过HTTP代理或SOCKS 4/5代理,否则不能访问网络。我正在运行OS X,并且希望从终端使用ssh命令以某种方式通过这两个代理之一来访问远程服务器。远程服务器上的SSH端口是非标准的,尽管我怀疑这会带来很大的不同。

Answers:


5

我知道这是一篇古老的文章,但我认为此答案仍会有所帮助:

您可以通过带有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)。


7

是的,这可以做到。有关示例,请参见本网站

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

您也可以使用nc(OS X附带)代替他们在该站点上提到的软件。

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


1
不幸的是,您链接到的页面已过期,并且指向二进制修补程序版本的链接已失效-404错误。
巴特B

1
哦,这真令人尴尬-我找到了一个有效的代理命令的链接,该命令仍在OS X 10.7 Lion上编译,并且仍然可以在我自己的博客上使用!在我的辩护中,该职位已满6岁,但仍然如此。这里的工作说明:bartbusschots.ie/blog/?p=184
Bart B

2
@BartB“您一周多以前写的任何东西都可能是别人写的。” -这是一个编程公理,但对于系统管理员和博客作者也是如此。
voretaq7 2011年

3

有点晚了,但是请注意,您可以在SSH命令本身中使用带有-o标志的其他答案。这对我很有用,因为我可能需要也可能不需要使用代理(取决于我所在的办公室),因此我实际上并不想编辑ssh配置文件。

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" myuser@cantaccessthiswithoutproxy.com
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.