由于升级OpenSSH涉及到安全性问题,为保险起见,在升级前最好安装telnet服务作为备用方案,然后在升级成功后再停止telnet即可。


一、OpenSSH升级相关源码包下载地址

zlib http://www.zlib.net/zlib-1.2.11.tar.gz
zlib其他版本下载地址 http://www.zlib.net/fossils/
openssl-fips http://www.openssl.org/source/openssl-fips-2.0.16.tar.gz
OpenSSL http://www.openssl.org/source/openssl-1.0.2m.tar.gz
OpenSSH https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz

安装依赖包

yum -y install gcc pam-devel zlib-devel openssl-devel telnet*


注:官网说明openssh7.6p1依赖的openssl的版本为>1.0.1e 并且 < 1.1.0


二、编译相关源码包

yum install -y zlib(若系统已安装可不用执行此步骤),这里我是采用的编译安装zlib


1、安装zlib

解压

tar-xvf zlib-1.2.11.tar.gz                
cdzlib-1.2.11
./configure
make            
makeinstall

查看

ll/usr/local/lib


2、安装openssl-fips

此为FIPS140-2 support module for openssl, 具体说明参见http://www.openssl.org/docs/fips

[root@baby openssl-fips-2.0.16]# tar zxpf openssl-fips-2.0.16.tar.gz
# cd openssl-fips-2.0.16
# ./config
# make && make install

生成路径在:

/usr/local/ssl/fips-2.0/


3、安装openssl

这里安装openssl需要注意编译安装的方法,是否结合fips模块,有如下两种方法:

3.1、升级openssl为1.0.2m,未结合fips模块编译

# tar -xf openssl-1.0.2m.tar.gz
# cd openssl-1.0.2m
[root@localhost openssl-1.0.2m]# ./config --prefix=/usr --openssldir=/usr/ shared zlib
需带上–shared参数 否则会出现头文件和库文件不匹配

#make

由于我使安装在原路径下,所以我将旧的配置文件挪了一下位置

mv /usr/bin/openssl  /usr/bin/openssl.oldbak
mv /usr/include/openssl  /usr/include/openssl.oldbak
 [root@baby openssl-1.0.2m]#make install

查看是否升级成功

# openssl version -a | openssl version

1ce2fc73dbfe3ed1517621649dc45248.jpg-wh_

3a47f0d43125614ee82e040f24ecf831.jpg-wh_


3.2、升级openssl为1.0.2m-fips,结合fips进行编译,编译参数如下:

# tar -xf openssl-1.0.2m.tar.gz
# cd openssl-1.0.2m
[root@localhost openssl-1.0.2m]# ./config fips --prefix=/usr --openssldir=/usr/ shared zlib
需带上–shared参数 否则会出现头文件和库文件不匹配
#make

将旧的配置文件挪了一下位置:
mv /usr/bin/openssl  /usr/bin/openssl.oldbak
mv /usr/include/openssl  /usr/include/openssl.oldbak
[root@baby openssl-1.0.2m]#make install

查看是否升级成功

# openssl version -a | openssl version

09e79180cc5a06028967954ae4916320.jpg-wh_


0e7d2cdc71609bc0741c69e01b2146df.jpg-wh_

至此已全部完成OpenSSL的升级工作


4、安装openssh

wget https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz
[root@localhost~]# cd openssh-7.6p1
[[email protected]]# ./configure --prefix=/usr --sysconfdir=/etc/ssh
完成后执行make:
[root@bogon openssh-7.6p1]# make

make完成后先不要make install,备份旧的ssh并易名

[[email protected]]# mv /etc/ssh/ /etc/sshbak

或用下面,推荐用上面备份

make完成后先不要make install,先卸载旧版的openssh

[root@bogon openssh-7.6p1]# rpm -e --nodeps `rpm -qa | grep openssh`

完成后执行make install:

[root@bogon openssh-7.6p1]# make install

查看下安装结果:

[root@bogon openssh-7.6p1]# ssh -V


至此编译全部安装完成



三、ssh相关配置

1、配置sshd服务:

复制启动文件到/etc/init.d/下并命名为sshd(原先存在旧启动脚本备份易名):

[root@bogon openssh-7.6p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd

加入开机启动:

[root@bogon openssh-7.6p1]# chkconfig --add sshd


2、配置允许root使用ssh:

openssh7.6后默认root用户是不能用ssh远程登录的(但普通用户是可以ssh远程登录的),需要修改配置文件:

[root@bogon openssh-7.6p1]# vim /etc/ssh/sshd_config
找到#PermitRootLoginprohibit-password项,去掉注释并把prohibit-password改为yes
PermitRootLogin yes
配置允许root用户远程登录


这一操作很重要!很重要!很重要!重要的事情说三遍,因为openssh安装好默认是不执行sshd_config文件的,所以即使在sshd_config中配置允许root用户远程登录,但是不加上这句命令,还是不会生效!

vim /etc/init.d/sshd
在 ‘$SSHD $OPTIONS &&success || failure’这一行上面加上一行如下:
{OPTIONS="-f /etc/ssh/sshd_config"}

升级openssh_第1张图片

保存退出


重启ssh服务:

[root@bogon openssh-7.6p1]# service sshd restart

至此升级/安装完成。

AllowUsers tom