尝试创建一个 socks (-D) ssh 隧道-Linux 机器到 Linux 机器(均为 centos):
sshd 在远程端运行正常。
从本地机器上我们可以做/看到以下情况:
ssh -D 1080 [email protected].
[email protected]'s password:
bind: Cannot assign requested address
(其中 8.8.8.8 实际上是我的服务器的 IP,而“用户”是我真正的用户名)
我已在此终端窗口中登录到远程端。我可以通过以下方式验证本地端口在执行此命令之前未被使用,而在执行此命令之后被 ssh 进程使用:
netstat -lnp | grep 1080
因此,与大多数针对此错误的 google 搜索响应不同,问题似乎不是环回接口分配。如果我尝试将此隧道与邮件客户端一起使用,本地端允许尝试(无“代理失败”错误),但不返回任何数据/回复。
在远程端,我的 sshd_config 中确实有“PermitTunnel yes”(尽管“yes”应该是默认值)。
想法还是线索?
以下是相关的调试输出
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
....
debug1: Authentication succeeded (password).
debug1: Local connections to LOCALHOST:1080 forwarded to remote address socks:0
debug1: Local forwarding listening on 127.0.0.1 port 1080.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on ::1 port 1080.
bind: Cannot assign requested address
debug1: channel 1: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.utf8
其他线索:如果我在运行 Windows 的客户端上运行虚拟盒,则在该盒中使用腻子打开一个隧道,该隧道到同一个远程服务器就可以工作。
更奇怪的是“如果我使用直接在 Linux 客户端上运行的 Putty(用于 Linux),它不起作用,即使设置与在同一客户端机器上的虚拟盒中的 Windows 上运行的 Putty 中可以工作的 Putty 设置完全相同?有什么不对劲...仍在尝试实验来弄清楚它是什么。
答案1
在这里关闭循环。在这种情况下,答案是强制 ssh 客户端使用 ipv4。例如
ssh -4 -D 8081 [email protected]