起因:通过xshell登录服务器,没有反应,联系机房查看ssh端口,发现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,出现下图错误提示

6.查看/var/log/messages 和/var/log/secure 均没有报错信息。

解决方法尝试:

一、yum重装openssh-server等 (失败)

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

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

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

二、最后尝试编译安装openssh(成功)

1、下载软件包

cd /usr/local/src/
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz

1、下载openssh-6.7p1.tar.gz:

cd /usr/local/src/
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz

2、备份ssh配置文件:

mv /etc/ssh /etc/ssh.bak

3、查看是否缺包

rpm -qa | egrep "gcc|make|perl|pam|pam-devel|zlib|zlib-devel"

如果有配置yum了的话可以直接yum安装这些包,这样既可以检验是否装了,没装的直接装上。

yum -y install gcc* make perl pam pam-devel zlib zlib-devel

先卸载完旧版本的openssh

rpm -e  --nodeps `rpm -qa | grep openssh`
开始编译安装

1、安装openssh-6.7

tar zxf openssh-6.7p1.tar.gz && cd openssh-6.7p1

如果需要伪装ssh显示的版本信息,先修改version.h文件:

在这里插入图片描述

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
make
make install

2、查看是否升级到新版本

在这里插入图片描述

3、复制启动脚本到/etc/init.d

cp /root/openssh-6.7p1/contrib/redhead/sshd.init  /etc/init.d/sshd

4、加入开机自启

 chkconfig --add sshd
 chkconfig sshd on
 chkconfig sshd --list

在这里插入图片描述

5、启动sshd,用start或reload。不要restart,restart 会直接断开连接,而并不会接着启动sshd服务,这时候要通过其他途径进入机器,然后启动sshd服务才行。

在这里插入图片描述

问题显现:
1、ssh查看状态后出现报错:sshd dead but subsys locked
[root@cacti主246 app]# service sshd status
sshd dead but subsys locked           ##百度查看此报错解决办法
[root@cacti主246 app]# sshd -d
sshd re-exec requires execution with an absolute path
[root@cacti主246 app]# find / -name sshd
/usr/local/src/openssh-6.7p1/sshd
/usr/local/src/openssh-6.7p1/contrib/hpux/sshd
/usr/sbin/sshd
/var/lock/subsys/sshd
/etc/rc.d/init.d/sshd
[root@cacti主246 app]# /usr/sbin/sshd -d  
debug1: sshd version OpenSSH_6.7, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: private host key: #0 type 1 RSA
debug1: private host key: #1 type 2 DSA
debug1: private host key: #2 type 3 ECDSA
debug1: private host key: #3 type 4 ED25519
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.

解决办法:
[root@cacti主246 app]# ls -l /dev/null 
-rw-r--r--. 1 root root 115265 Oct 20 16:40 /dev/null
[root@cacti主246 app]# mv /dev/null /dev/null.bak
[root@cacti主246 app]# mknod /dev/null c 1 3
[root@cacti主246 app]# service sshd restart
Stopping sshd:                                             [FAILED]
Starting sshd:                                             [  OK  ]
[root@cacti主246 app]# netstat -lntup    端口22成功启动
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      6515/zabbix_agentd  
tcp        0      0 127.0.0.1:199               0.0.0.0:*                   LISTEN      13259/snmpd         
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7278/mysqld         
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      14441/sshd          
tcp        0      0 :::10050                    :::*                        LISTEN      6515/zabbix_agentd  
tcp        0      0 :::873                      :::*                        LISTEN      12116/xinetd        
tcp        0      0 :::80                       :::*                        LISTEN      5487/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      14441/sshd          
tcp        0      0 :::23                       :::*                        LISTEN      12116/xinetd        
udp        0      0 0.0.0.0:161                 0.0.0.0:*                               13259/snmpd         

三、ssh无法远程机房服务器的情况下,可以开启telnet远程登录,解决完问题后及时telnet远程登录。

1.安装telnet
检查是否有telnet客户端与服务端
rpm -qa telnet*
12

在这里插入图片描述

若没有则安装telnet
yum install -y telnet telnet-server xinetd

2.开通telnet端口
vim /etc/services

去掉23端口注释

在这里插入图片描述

3.设置telnet服务状态
vim /etc/xinetd.d/telnet
将disable=yes改为disable=no

在这里插入图片描述

4.配置权限
vi /etc/pam.d/login

在这里插入图片描述

5.开通telent控制台
vi /etc/securetty 文件末尾添加
pts/1
pts/2
pts/3
pts/4
pts/5
123456

在这里插入图片描述

6.重启服务
service xinetd restart

7、然后可以直接在CRT或者xshell中使用 telnet 登录

telnet 192.168.100.100

配置方法参考此网站:https://blog.csdn.net/lz9009/article/details/99632344

其他内容参考博客:

https://www.cnblogs.com/chimeiwangliang/p/7729883.html

https://blog.csdn.net/baidu_33615716/article/details/90178483

https://www.cnblogs.com/hy007x/p/6698525.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐