服务器能ping通,但用FinalShell连接不上

昨天因为学习需要,把服务器借给了同学使用。昨天晚上我再尝试使用FinalShell登陆服务器的时候,服务器显示Session.connect: java.net.ConnectException: Connection,已经连接不上服务器了。今天早上问了一下同学,他却可以连接服务器。初步推测应该不是同学的误操作,可能是我电脑的问题。

一、问题描述

  1. 其他人能够使用FinalShell登陆服务器,我登陆不了
  2. 我用ping工具测试服务器地址,可以ping通
  3. 我的Finalhell报错Connection closed
  4. 服务器的22端口和sshd服务都确定已经打开了
  5. 尝试使用putty以及Xftp,都连接不上服务器

二、解决方式

2.1 首先需要想办法连接到服务器

我这边用的是阿里云服务器,登陆阿里云后台可以使用控制台的远程连接登陆服务器。
服务器能ping通,但用FinalShell连接不上

2.2 参考这篇博客

登陆之后使用尝试了这篇博客的方法。

  1. 查看22端口状态,确定端口是在监听的
  2. 查看ssh状态,确定sshd正在运行
  3. 执行systemctl stop firewalld.sercive关闭防火墙。出现报错,没有firewalld服务。。。
  4. 执行ll /var/empty/,不存在/var/empty/目录。。。
  5. 删除了/root/.ssh/known_hosts文件
  6. 编辑/etc/ssh/sshd_config文件,将其中的X11Forwarding yes改为了X11Forwarding no
  7. 重启服务器

没用啊,FinalShell还是连不上服务器。。。。

2.3 尝试使用Linux终端的SSH连接

实在没办法了,我尝试在Linux终端里,用ssh [email protected]_ip的方式连接服务器。效果如下。
服务器能ping通,但用FinalShell连接不上
可以看到,终端也给出了警告信息,还说什么存在中间人攻击,无语了。。。。

这个警告给出了解决方案:ssh-****** -f "/home/zhj/.ssh/known_hosts" -R "47.95.13.239",也就是把服务器的IP地址添加到本地SSH的known_hosts文件中。

按照上述提示操作:
服务器能ping通,但用FinalShell连接不上
接下来再次尝试使用ssh方式连接服务器:
服务器能ping通,但用FinalShell连接不上
可以看到,系统提示我要重新确认**的真实性,要输入yes并输入服务器密码。
SSH方式居然连接成功了。。。

于是我赶紧试了一下用FinalShell方式连接服务器。
服务器能ping通,但用FinalShell连接不上
终于连上了。。。
后来我在Windows环境下又试了试,也是可以连接的。

三、总结

具体是什么原因导致的FinalShell连接失败?我也不知道。能解决问题就完事了。

四、参考资料

  1. 能ping得通服务器但却ssh不了的原因 - by 韦小龙
  2. Finalshell无法连接ssh Session.connect: java.net.ConnectException: Connection - by Pursue__
  3. 服务器能ping通,ssh却连不上 - by zou79189747