背景
实验室某服务器主机出现如下问题:xxx,那个123 节点昨天下午开始ssh连接不上了,可以ping 通~你走之前可以帮我看一下麽? 我验证了以下,发现确实可以ping得通,但是ssh连接提示如下(假设服务的IP为:123.11.22.123,IP为随机写的):
ssh: connect to host 123.11.22.123 port 22: Connection refused
这种情况,可能是防火墙的原因,也可能是ssh服务没有启动成功。
查看防火墙配置
使用以下命令查看防火墙状态:
sudo ufw status
发现防火墙正常允许22端口访问,如下所示:
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
22/tcp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
因此,不是防火墙的原因。
备注:如果是防火墙拦截的原因,则直接allow ssh连接即可,如下所示:
sudo ufw allow ssh
查看ssh服务是否成功开启
sudo su
systemctl status ssh.service
返回的结果出现Failed,说明ssh服务没有成功启动
尝试重启ssh服务
sudo service ssh start
/etc/init.d/ssh start
/etc/init.d/ssh restart
这些操作都尝试之后,发现ssh服务仍然没有启动成功,重启服务器主机,发现也没能解决问题。
卸载原来的ssh并且重装新的ssh
1、卸载目前的ssh:
sudo apt-get autoremove --purge openssh-server openssh-client
2、重装新的ssh
sudo apt-get update
sudo apt-get install openssh-server openssh-client
3、查看ssh进程
ps -e | grep ssh
返回如下:
4820 ? 00:00:00 sshd
说明已经启动ssh服务。如果你的ssh服务没有启动,可以使用如下命令:
sudo service ssh start
4、查看ssh状态
systemctl status ssh.service
返回如下所示结果,说明ssh服务正常启动 5、使用ssh连接服务器,发现已经可以成功连接,问题成功解决!
总结
如果突然发生ssh无法连接到服务器,首先看看是否能ping得通服务器,ping得通说明不是网络的原因;然后查看服务器的防火墙设置,看看ssh连接的端口是否被deny了,或者限制了访问的IP源地址;其次,查看ssh服务是否成功启动,尝试重启ssh服务看看能否解决问题;最后,尝试卸载当前的ssh软件,重新安装新的ssh软件。对于新手来说,重装ssh软件,远比修改ssh的配置文件来得简单方便!
|