最近准备搭建一套开发环境,就让运维从现有机器上拷贝了一台。由于本人一直使用 FinalShell作为ssh连接工具,这款工具是国产开源的,界面做的简介,操作还是很不错的,唯一的缺点就是有时候比较吃cpu和内存。
拷贝好的机器,第一天连还是正常的。但是第二天的时候,再次连接就出现了,连接成功,过一会,chanel is not opened. 然后连接断开。整个过程耗时还是比较长的。
后来就开始了在网上搜索各种方案,在搜索方案的时候,突然发现一个问题,就是其他客户端是可以连接的,比如运维同事使用的xshell, 我又使用了 Royal TSX 发现只有FinalShell连不上。这就奇怪了,然后开始在网上找解决方案,当然也是被坑了n多次。
首先能查到最多的就是让修改服务器上的 /etc/ssh/sshd_config文件,然后改类似这样的参数
UseDNS no
GSSAPIAuthentication no
之后重启ssh服务, 试了一下不管用,因为机器里useDNS 本来就是no
之后我开始怀疑是不是机器上的sftp有问题,因为一搜索 chanel is not opened这个错误,基本都是和sftp相关,我猜测有可能是这个服务没起来,而finalShell的连接可能需要这个服务,最后又试了几次,发现这个服务也没问题。
就这样两天过去了。第三天的想着还是先用别的软件将就用吧, 使用Royal TSX的时候发现他虽然能连上,但是连接的也特别慢。我就转换了思路,开始查询ssh 连接缓慢的原因。 然后里边有一个方法就是 使用
ssh -v ip的的连接方式,就可以类似debug一样,打印出连接的过程,进而定位出哪里连接缓慢。我就实验了一下。发现卡在了这一步:
然后就直接搜着这个问题。这篇文章中找到了答案:
https://blog.csdn.net/littleRpl/article/details/110119384
结果就是说systemd-logind 这个服务有问题,需要重启一下:
systemctl restart systemd-logind
重启后再次验证,发现FinalShell也连接上了。 真是太神奇了,必须记录一下。如果你也遇到类似问题,希望可以给你提供到帮助。