当前位置:   article > 正文

Linux服务器,ssh服务突然失效的解决方法_service sshd status

service sshd status

公司某台服务器不知为何无法ssh连接上,进入现场查看:

1.执行netstat -atnlp|grep ssh,没有找到ssh端口

2.执行ps aux|grep ssh,没找到相关进程

3.执行service sshd start,显示绿色的OK,但用ps和netstat看不到ssh任何信息,echo $?结果为0 

4.执行service sshd status,显示:openssh-daemon is stopped

4.执行service sshd stop,无报错信息,echo $?结果为0

5.执行service sshd restart,出现下图错误提示:

 


 

解决过程:

 

一.查看日志:

 

查看/var/log/messages,和/var/log/secure文件内容

(目的:查看SSH的所有相关日志信息,以便于分析,但发现这两个文件被删掉了)

用touch命令重新建立messages和secure文件,再重启sshd服务,但这两个文件内容依旧为空。(先不管它)

 

二.用yum重新安装(没成功):

 

1.用 rpm -qa | grep openssh 查看有哪些ssh包

    #rpm -qa | grep openssh

    openssh-server-5.3p1-94.el6.x86_64

    openssh-clients-5.3p1-94.el6.x86_64

    openssh-5.3p1-94.el6.x86_64

    openssh-askpass-5.3p1-94.el6.x86_64

 

2.用 yum remove openssh-server 把软件包删掉,其他的openssh包保险起见没删,怕全删了会因依赖关系包被删,进而影响其他业务的运行。

 

3.用yum install openssh-server 重新安装该包,操作完成后,用service sshd start 发现和当初一样,start是OK状态,但服务起不来。

 

三.改用编译方式重装openssh(成功):

 

1.首先用yum remove openssh-server删掉原先的包,在openssh官网下载高版本:

http://www.openssh.com/openbsd.html

(我用的是openssh-7.3p1.tar.gz,在官网没找到,所以在csdn下载了该包)

 

2.编译安装:

tar -xvzf openssh-7.3p1.tar.gz  -C  /opt  &&  cd /opt/openssh-7.3p1

./configure && make && make install

    【编译参数可参考:http://www.2cto.com/os/201703/615376.html

    【 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening

 

3.拷贝ssh服务文件:

cp ./contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

 

4.修改SSHD服务文件:

vim /etc/init.d/sshd

修改以下内容

SSHD=/usr/sbin/sshd 为 SSHD=/usr/local/sbin/sshd    【25行】

/usr/sbin/ssh-keygen -A 为 /usr/local/bin/ssh-keygen -A    【41行】

保存退出

 

5.加入系统服务:

chkconfig --add sshd

 

查看系统启动服务是否增加改项

    chkconfig --list |grep sshd

    sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off 

 

6.允许root用户远程登录:

cp sshd_config /etc/ssh/sshd_config

vim /etc/ssh/sshd_config 修改 PermitRootLogin yes,并去掉注释

 

7.配置允许root用户远程登录:

这一操作很重要!很重要!很重要!重要的事情说三遍,因为openssh安装好默认是不执行sshd_config文件的,所以即使在sshd_config中配置允许root用户远程登录,但是不加上这句命令,还是不会生效!

vim /etc/init.d/sshd

在 ‘$SSHD $OPTIONS && success || failure’这一行【51行】上面加上一行 :

OPTIONS="-f /etc/ssh/sshd_config"  

保存退出

 

执行:service sshd start,出现绿色的OK,

执行:service sshd status,此时出现了以下错误信息:

error: sshd dead but subsys locked

解决方法:

rm -rf /dev/null

mknod /dev/null c 1 3

 

再次启动后,出现了sshd is running,端口和进程都出现了:

service sshd start 

service sshd status

       sshd is running......

 

端口和进程都出现了:

ps aux|grep ssh

netstat -atnlp|grep ssh

 

搞定。

 

总结:故障原因未知。用yum方式安装的ssh服务启动不成功,可能是某些与SSH相关联的进程需要通过重启系统才生效(生产环境不允许随便重启系统)。而编译方式安装的ssh,与之前的进程没有关联,所以能启动成功。

至于为何ssh服务会出现故障,暂无法查出原因。编译openssh的时候,可以根据需要添加参数(--with-pam,--with-tcp-wrappers等)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/158137
推荐阅读
相关标签
  

闽ICP备14008679号