昨天因為學習需要,把服務器借給了同學使用。昨天晚上我再嘗試使用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