服务器能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 首先需要想办法连接到服务器

我这边用的是阿里云服务器,登陆阿里云后台可以使用控制台的远程连接登陆服务器。
图1 阿里云远程连接

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 username@server_ip的方式连接服务器。效果如下。
图2 SSH方式连接服务器
可以看到,终端也给出了警告信息,还说什么存在中间人攻击,无语了。。。。

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

按照上述提示操作:
图3 添加主机名
接下来再次尝试使用ssh方式连接服务器:
图4 SSH方式连接成功
可以看到,系统提示我要重新确认密钥的真实性,要输入yes并输入服务器密码。
SSH方式居然连接成功了。。。

于是我赶紧试了一下用FinalShell方式连接服务器。
图5 FinalShell连接成功
终于连上了。。。
后来我在Windows环境下又试了试,也是可以连接的。

三、总结

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

四、参考资料

  1. 能ping得通服务器但却ssh不了的原因 - by 韦小龙
  2. Finalshell无法连接ssh Session.connect: java.net.ConnectException: Connection - by Pursue__
  3. 服务器能ping通,ssh却连不上 - by zou79189747
原文地址:https://www.cnblogs.com/ZHJ0125/p/12904467.html