在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 重新加载

 

posted @   梦醒江南·Infinite  阅读(726)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示