在Windows使用ssh客户端工具通过映射的端口登录docker容器失败

首先发现的问题是在Windows上使用客户端工具登录到docker容器失败了:

检查了docker容器映射的端口,确认了客户端工具所设置的ssh端口没问题。

然后在docker的宿主机上使用ssh -v root@172.17.0.2连接到客户端,发现在

debug1: SSH2_MSG_NEWKEYS received

这一行信息处会停顿一个较长的时间


一开始按照“解决SSH登录linux服务器慢的问题”这样的关键词去搜索,解决方法有:

方法1. 在容器内添加UseDNS no到/etc/ssh/sshd_config文件

方法2. 修改容器内的/etc/hosts文件,将Windows主机的IP和Hostname添加进去

方法3. 修改/etc/nsswitch.conf,将“hosts:”一行改成:hosts: files dns

方法4. Windows和docker容器网络直连

方法5. 修改mtu大小

然冰暖。。。


要是能看到登录失败的一些信息就好了,刻舟求剑有时候也是解决办法,于是想是不是docker配置错了,DHCP有问题啊(docker的IP没变,不太可能)...

最后在docker info的输出中看到一条非常重要的信息:

 WARNING: IPV4 forwarding is disabled  

IPV4转发被禁用了!!!,难怪无法通过docker 容器22端口映射的宿主机端口登录。

剩下的事就好办了,开启IPV4转发不就好了吗


开启IPV4转发请看:https://blog.csdn.net/m0_37726449/article/details/100073042,或者自己随便去搜一下。

临时开启:

sysctl -w net.ipv4.ip_forward=1

永久开启:

vim /etc/sysctl.conf

# 增加一行

net.ipv4.ip_forward = 1

# 保存文件

# sysctl -p 重新加载

原文地址:https://www.cnblogs.com/144823836yj/p/12612993.html