当前版本信息:

OS:                 RHEL5.8 X64

OpenSSH:   4.3p2

openssl:      0.9.8e

zlib:            1.2.3-4


OpenSSH版本7.4p1依赖的OpenSSL版本为1.0.2k,而不是其最新版1.1.0e(使用此版会升级失败)。ZLIB可以使用最新版1.2.11,redhat5.8自带的zlib版本为1.2.3,无须进行升级。

三者下载地址:

http://www.zlib.net/

http://www.openssl.org/

http://www.openssh.org/


安装telnet

因升级OpenSSH过程中需要卸载现有OpenSSH, 因此为了保持服务器的远程连接可用,需要启用telnet服务作为替代,如升级出现问题,也可通过telnet登录服务器进行回退

[root@localhost ~]# rpm -ivh telnet-server-0.17-39.el5.x86_64.rpm

[root@localhost ~]# vi /etc/xinetd.d/telnet        //将其中disable字段的yes改为no以启用telnet服务

[root@localhost ~]# mv /etc/securetty /etc/securetty.old

[root@localhost ~]# service xinetd restart

[root@localhost ~]# chkconfig xinetd on


升级OpenSSL

1、备份当前openssl:

[root@localhost openssl]# find / -name openssl

/root/percona-xtrabackup-2.4.8/extra/yassl/include/openssl

/usr/share/doc/ruby-1.8.5/sample/openssl

/usr/lib64/openssl

/usr/include/openssl

/usr/lib/openssl

/usr/lib/ruby/1.8/openssl

/usr/bin/openssl

[root@localhost ~]# mv /usr/include/openssl /usr/include/openssl.old

[root@localhost ~]# mv /usr/bin/openssl /usr/bin/openssl.old

[root@localhost ~]# mv /usr/lib/openssl /usr/lib/openssl.old

[root@localhost ~]# mv /usr/lib64/openssl /usr/lib64/openssl.old

    --如下两个库文件必须先备份,因系统内部分工具(如yum、wget等)依赖此库,而新版OpenSSL不包含这两个库(RHEL6.4需要备份的为libcrypto.so.10、libcrypto.so.6及libssl.so.10、libssl.so.6)

[root@localhost ~]# cp /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.old

[root@localhost ~]# cp /usr/lib64/libssl.so /usr/lib64/libssl.so.old


2、卸载当前openssl:

[root@localhost ~]# rpm -aq|grep openssl

openssl-devel-0.9.8e-22.el5

openssl-0.9.8e-22.el5

openssl-devel-0.9.8e-22.el5

openssl-0.9.8e-22.el5

[root@localhost ~]# rpm -e openssl-0.9.8e-22.el5 --allmatches --nodeps

[root@localhost ~]# rpm -e openssl-devel-0.9.8e-22.el5 --allmatches --nodeps


3、解压openssl_1.0.2k源码并编译安装:

[root@localhost ~]# tar -zvxf openssl-1.0.2k.tar.gz

[root@localhost ~]# cd openssl-1.0.2k

[root@localhost openssl-1.0.2k]# ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib

[root@localhost openssl-1.0.2k]# make

[root@localhost openssl-1.0.2k]# make test        //必须执行这一步结果为pass才能继续,否则即使安装完成,ssh也无法使用

[root@localhost openssl-1.0.2k]# make install

[root@localhost openssl-1.0.2k]# openssl version -a        //查看升级是否成功

    --测试发现,RHEL5.X安装过程中会自动建立libssl.so.6、libcrypto.so.6的软连接分别指向前面备份的libssl.so.old、libcrypto.so.old;RHEL6.4下为libssl.so.10、libcrypto.so.10指向libssl.so.10.old、libcrypto.so.10.old,以及libssl.so.6、libcrypto.so.6指向libssl.so.6.old、libcrypto.so.6.old,也会自动建立,故无需额外执行恢复操作,以上文件均在/usr/lib64/下。如果RHEL5.X下安装完成后libssl.so.6及libcrypto.so.6不存在(RHEL6.4下为libssl.so.6、libcrypto.so.6、libssl.so.10及libcrypto.so.10),用之前库文件的备份进行恢复,或者手动建软连接,否则某些服务找不到这两项将无法启动


升级OpenSSH

1、备份当前openssh:

[root@localhost ~]# mv /etc/ssh /etc/ssh.old


2、卸载当前openssh:

[root@localhost ~]# rpm -aq|grep openssh

openssh-4.3p2-82.el5

openssh-clients-4.3p2-82.el5

openssh-server-4.3p2-82.el5

openssh-askpass-4.3p2-82.el5

[root@localhost ~]# rpm -e openssh-4.3p2-82.el5 --nodeps

[root@localhost ~]# rpm -e openssh-clients-4.3p2-82.el5 --nodeps

[root@localhost ~]# rpm -e openssh-server-4.3p2-82.el5 --nodeps

[root@localhost ~]# rpm -e openssh-askpass-4.3p2-82.el5 --nodeps


3、openssh安装前环境配置:

[root@localhost ~]# install  -v -m700 -d /var/lib/sshd

[root@localhost ~]# chown  -v root:sys /var/lib/sshd

[root@localhost ~]# groupadd -g 50 sshd

[root@localhost ~]# useradd  -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd


4、解压openssh_7.4p1源码并编译安装:

[root@localhost ~]# tar -zvxf openssh-7.4p1.tar.gz

[root@localhost ~]# cd openssh-7.4p1

[root@localhost openssh-7.4p1]# ./configure --prefix=/usr  --sysconfdir=/etc/ssh  --with-md5-passwords  --with-pam  --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd

[root@localhost openssh-7.4p1]# make && make install


5、openssh安装后环境配置:

在openssh编译目录执行如下命令

[root@localhost openssh-7.4p1]# install -v -m755 contrib/ssh-copy-id /usr/bin

[root@localhost openssh-7.4p1]# install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1

[root@localhost openssh-7.4p1]# install -v -m755 -d /usr/share/doc/openssh-7.4p1

[root@localhost openssh-7.4p1]# install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.4p1

[root@localhost openssh-7.4p1]# ssh -V

OpenSSH_7.4p1, OpenSSL 1.0.2k  26 Jan 2017


6、启用OpenSSH服务:

在openssh编译目录执行如下命令(并对/etc/ssh/sshd_config文件根据系统需求进行相应的修改)

[root@localhost openssh-7.4p1]# echo "X11Forwarding yes" >> /etc/ssh/sshd_config

[root@localhost openssh-7.4p1]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

[root@localhost openssh-7.4p1]# cp -p contrib/redhat/sshd.init /etc/init.d/sshd

[root@localhost openssh-7.4p1]# chmod +x /etc/init.d/sshd

[root@localhost openssh-7.4p1]# chkconfig --add sshd

[root@localhost openssh-7.4p1]# chkconfig sshd on

[root@localhost openssh-7.4p1]# chkconfig --list sshd

[root@localhost openssh-7.4p1]# service sshd restart


以ssh登录系统,确认一切都正常后,关闭telnet服务以保证系统安全性

[root@localhost ~]# mv /etc/securetty.old /etc/securetty

[root@localhost ~]# chkconfig  xinetd off

[root@localhost ~]# service xinetd stop