最近准备搭建一套开发环境,就让运维从现有机器上拷贝了一台。由于本人一直使用 FinalShell作为ssh连接工具,这款工具是国产开源的,界面做的简介,操作还是很不错的,唯一的缺点就是有时候比较吃cpu和内存。

拷贝好的机器,第一天连还是正常的。但是第二天的时候,再次连接就出现了,连接成功,过一会,chanel is not opened. 然后连接断开。整个过程耗时还是比较长的。

finalshell 使用公钥连接远程服务器_重启

 

后来就开始了在网上搜索各种方案,在搜索方案的时候,突然发现一个问题,就是其他客户端是可以连接的,比如运维同事使用的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一样,打印出连接的过程,进而定位出哪里连接缓慢。我就实验了一下。发现卡在了这一步:

finalshell 使用公钥连接远程服务器_ChanelNotOpened_02

然后就直接搜着这个问题。这篇文章中找到了答案: 


结果就是说systemd-logind 这个服务有问题,需要重启一下:

systemctl restart systemd-logind
 

重启后再次验证,发现FinalShell也连接上了。 真是太神奇了,必须记录一下。如果你也遇到类似问题,希望可以给你提供到帮助。