主机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。
答案 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
中进行配置。