【Linux】 ssh 连接的时候,卡在 SSH2_MSG_KEXINIT sent 的一种解决办法

  • ssh,sshd,SSH2_MSG_KEXINIT,ssh登录不成功,ssh登录时间长

在使用 ssh 登录我的服务器的时候,偶尔会发现 ssh 登录时间特别长,最后直接显示超时断开了,没有任何的信息,简直毫无头绪,不清楚是 ssh 客户端的问题,还是 sshd 服务端的问题。

我尝试过把 .ssh/known_hosts 文件删除掉,但是没有用。

通过 -v 参数可以查看 ssh 连接的 debug 日志输出,希望获得更多的信息。

ssh -v user@example.com

每次登录不成功的时候,会发现日志长时间卡在 "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 的值了。

修改 sshd_config

今天又抽风了,怎么修改 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