在Linux中通过代理连接主机的SSH客户端

9

我真的在这个问题上苦苦挣扎。

我的主机(A)位于代理/防火墙(PF)后面,需要连接到主机H。

代理已经配置了HTTP/FTP/SOCK代理,我在网络浏览器、wget等方面没有任何问题,但是当我使用...

ssh H //to connect my host 

我无法成功地通过代理传输。它似乎试图直接连接而不是通过PF。

我正在使用Ubuntu 12.10。


所以,您是否尝试使用HTTP服务器来代理SSH? - beatgammit
2个回答

10

请查看ssh的ProxyCommand选项文档。您可以指定要运行的命令(例如nc)以连接到给定的主机和端口。例如,将以下内容添加到您的.ssh/config文件中可能适用于穿越SOCKS5代理:

ProxyCommand nc -x MY_PROXY_HOST:MY_PROXY_PORT %h %p

更详细的说明将取决于您的环境。


1
如果你正在使用http(s)代理而不是SOCKS代理,请添加"-X connect"。参考:http://betterlogic.com/roger/2014/01/ssh-how-to-tunnel-through-an-http-proxy/ - rogerdpack

6

有几种方法可以做到这一点。您可以使用nc或尝试像corkscrew这样的包装器。我将描述与wrapeer相同的方式:

首先通过apt-get安装corkscrew。
然后,您需要在./ssh/config文件中指定ProxyCommand(将example-proxy.com和8080替换为您的代理主机和端口):

Host *
  ProxyCommand corkscrew example-proxy.com 8080 %h %p ~/.ssh/proxyauth

您的登录凭证应该以以下格式保存在 ~/.ssh/proxyauth 文件中:

login:password

2
%h %p 是什么意思? - puk
1
主机和端口,我猜。这里nc和corkscrew这样的包装器有什么区别? - rogerdpack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接