SSH到无法直接访问的远程主机

时间:2013-05-21 14:18:37

标签: macos ssh socat

主机A无法从我的本地网络访问。但是有一个主机B可以通过SSH访问,A可以看到B. 所以我设置了一个SSH隧道并尝试通过B访问A

ssh -N -D 7070 username@HOST_B

我的〜/ .ssh / config看起来像

host HOST_A
    ProxyCommand socat - PROXY:127.0.0.1:7070:%h:%p,proxyport=7070

当我运行以下命令时

ssh -v username@HOST_A

我收到了以下错误。

debug1: identity file /Users/leo/.ssh/id_rsa type -1
debug1: permanently_drop_suid: 501
debug1: identity file /Users/leo/.ssh/id_rsa-cert type -1
debug1: identity file /Users/leo/.ssh/id_dsa type 2
debug1: identity file /Users/leo/.ssh/id_dsa-cert type -1
2013/05/21 22:19:13 socat[4537] E proxy_connect: connection closed by proxy
ssh_exchange_identification: Connection closed by remote host

我的机器上没有/etc/hosts.allow或/etc/hosts.deny。 我正在使用mac OS。

1 个答案:

答案 0 :(得分:2)

您要求socat连接到HTTP代理,但您设置的ssh隧道是SOCKS代理。告诉socat连接到SOCKS代理:

host HOST_A
    ProxyCommand socat - SOCKS4:127.0.0.1:7070:%h:%p,proxyport=7070

(可能有其他SOCKS选项---请检查man socat您已安装的特定社交。

但通常您不希望提前设置ssh隧道。通常的方法是在HOST_B上使用netcat:

host HOST_A
    ProxyCommand /usr/bin/ssh username@HOST_B /bin/nc %h %p

(根据需要将路径名更改为ssh和netcat。)

娴静的ssh -t HOST_B ssh HOST_A方法也有效,但无法在~/.ssh/config中进行配置。