win10下用ssh做端口转发时因为localhost解析引起的失败

BraveWangDev 2020-08-19

对于一个端口转发命令:

ssh -N -o "ServerAliveInterval 30" -R  30006:localhost:30006 <remote-address>

这个命令的意思是将远程机器上的30006端口,映射到本地机器 localhost:30006的端口。这个命令在win7下面跑没有问题,但是win10下面跑,就总是不能成功。

加上-v -v -v参数查看ssh的输出日志,发现存在read failed, write failed等日志。后面通过网络搜索得到提示,是不是localhost的解析不对。

执行 ping localhost 命令,发现 localhost 解析成 ::1 这个ipv6地址,查看hosts(c:\windows\system32\driver\etc\hosts)文件,发现确实没有配置localhost的项,并且文件中有说明:

# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
先不管这些说明,直接在hosts文件中加上127.0.0.1 localhost,然后再执行ping localhost,发现仍然是解析成::1,说明这种方法不行。

最后干脆不管了,直接在上面ssh命令中,用127.0.0.1代替localhost,然后一些就正常了。

相关推荐