当前版本信息:
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