zoukankan      html  css  js  c++  java
  • 无法SSH服务器的解决过程(opensshdaemon is stopped)

     

    公司某台服务器不知为何无法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官网下载高版本:
    (我用的是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等)。
     
     
    参考资料:http://www.cnblogs.com/wuling129/p/5072965.html
  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/hy007x/p/6698525.html
Copyright © 2011-2022 走看看