升级OpenSSH的坑

用编译方式重装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  【 ./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等)。

 

猜你喜欢

转载自robotmen.iteye.com/blog/2416099