在使用 ssh 登录我的服务器的时候,偶尔会发现 ssh 登录时间特别长,最后直接显示超时断开了,没有任何的信息,简直毫无头绪,不清楚是 ssh 客户端的问题,还是 sshd 服务端的问题。
我尝试过把 .ssh/known_hosts 文件删除掉,但是没有用。
通过 -v 参数可以查看 ssh 连接的 debug 日志输出,希望获得更多的信息。
ssh -v [email protected]
每次登录不成功的时候,会发现日志长时间卡在 "debug1: SSH2_MSG_KEXINIT sent" 这行上
debug1: SSH2_MSG_KEXINIT sent
百度完了 Google,大部分的解决方案就是修改 mtu 的值,大概是这样:
echo "1454" > /sys/class/net/eth0/mtu
但是比较不幸的是,这个文件基本上是只读的,不允许修改。然后我的脑袋就一直卡壳在这了。直到今天,搜索中意外看到了一篇 mac 上的解决方案,在设置里,修改网络连接的配置。我才意识到,在 Linux,在 Ubuntu 也是可以通过网络连接的配置去修改的,我干嘛跟命令行过不去呀~
最后,就是在图形界面的网络连接配置里,修改 MTU 的值,1500,或者 1454 或者其他值,保存一下就解决了。需要注意的是,可能在稍后的某一个时刻又抽风了,再点一遍,不需要修改任何值,点一下保存就好了。我估计是什么服务默默地修改了 MTU 的值了。
今天又抽风了,怎么修改 MTU 都不管用,最后是通过修改 /etc/ssh/sshd_config 文件生效的。找到 UsePAM ,修改为 no 。
UsePAM no
我已经放弃了,我有两个服务器,一个是阿里云的 CentOS ,一个是搬瓦工的 Ubuntu。两台电脑,一台 Ubuntu ,一台 Windows。莫名其妙的能连上,然后又莫名其妙的连不上了。我觉得最大的嫌疑就是公司的网络了。
现在我只能通过阿里云的控制台远程连接到我的服务器,然后再 ssh 到搬瓦工的服务器,只能这样了~
- EOF -
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题:【Linux】 ssh 连接的时候,卡在 SSH2_MSG_KEXINIT sent 的一种解决办法
本文地址: https://binkery.com/archives/2019.12.03-SSH2_MSG_KEXINIT.html