昨天因为学习需要,把服务器借给了同学使用。昨天晚上我再尝试使用FinalShell登陆服务器的时候,服务器显示Session.connect: java.net.ConnectException: Connection
,已经连接不上服务器了。今天早上问了一下同学,他却可以连接服务器。初步推测应该不是同学的误操作,可能是我电脑的问题。
一、问题描述
- 其他人能够使用FinalShell登陆服务器,我登陆不了
- 我用ping工具测试服务器地址,可以ping通
- 我的Finalhell报错
Connection closed
- 服务器的22端口和sshd服务都确定已经打开了
- 尝试使用putty以及Xftp,都连接不上服务器
二、解决方式
2.1 首先需要想办法连接到服务器
我这边用的是阿里云服务器,登陆阿里云后台可以使用控制台的远程连接登陆服务器。
2.2 参考这篇博客
登陆之后使用尝试了这篇博客的方法。
- 查看22端口状态,确定端口是在监听的
- 查看ssh状态,确定sshd正在运行
- 执行
systemctl stop firewalld.sercive
关闭防火墙。出现报错,没有firewalld服务。。。 - 执行
ll /var/empty/
,不存在/var/empty/
目录。。。 - 删除了
/root/.ssh/known_hosts
文件 - 编辑
/etc/ssh/sshd_config
文件,将其中的X11Forwarding yes
改为了X11Forwarding no
- 重启服务器
没用啊,FinalShell还是连不上服务器。。。。
2.3 尝试使用Linux终端的SSH连接
实在没办法了,我尝试在Linux终端里,用ssh username@server_ip
的方式连接服务器。效果如下。
可以看到,终端也给出了警告信息,还说什么存在中间人攻击
,无语了。。。。
这个警告给出了解决方案:ssh-keygen -f "/home/zhj/.ssh/known_hosts" -R "47.95.13.239"
,也就是把服务器的IP地址添加到本地SSH的known_hosts
文件中。
按照上述提示操作:
接下来再次尝试使用ssh方式连接服务器:
可以看到,系统提示我要重新确认密钥的真实性,要输入yes
并输入服务器密码。
SSH方式居然连接成功了。。。
于是我赶紧试了一下用FinalShell方式连接服务器。
终于连上了。。。
后来我在Windows环境下又试了试,也是可以连接的。
三、总结
具体是什么原因导致的FinalShell连接失败?我也不知道。能解决问题就完事了。
四、参考资料
- 能ping得通服务器但却ssh不了的原因 - by 韦小龙
- Finalshell无法连接ssh Session.connect: java.net.ConnectException: Connection - by Pursue__
- 服务器能ping通,ssh却连不上 - by zou79189747