由于升级OpenSSH涉及到安全性问题,为保险起见,在升级前最好安装telnet服务作为备用方案,然后在升级成功后再停止telnet即可。
一、OpenSSH升级相关源码包下载地址
1
2
3
4
5
|
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
解压
1
2
3
4
5
|
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
1
2
3
4
|
[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模块编译
1
2
3
4
5
6
|
# 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
|
由于我使安装在原路径下,所以我将旧的配置文件挪了一下位置
1
2
3
|
mv
/usr/bin/openssl
/usr/bin/openssl
.oldbak
mv
/usr/include/openssl
/usr/include/openssl
.oldbak
[root@baby openssl-1.0.2m]
#make install
|
查看是否升级成功
1
|
# openssl version -a | openssl version
|
3.2、升级openssl为1.0.2m-fips,结合fips进行编译,编译参数如下:
1
2
3
4
5
6
7
8
9
10
|
# 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
|
查看是否升级成功
1
|
# openssl version -a | openssl version
|
至此已全部完成OpenSSL的升级工作
4、安装openssh
1
2
3
4
5
|
wget https:
//fastly
.cdn.openbsd.org
/pub/OpenBSD/OpenSSH/portable/openssh-7
.6p1.
tar
.gz
[root@localhost~]
# cd openssh-7.6p1
[root@localhostopenssh-7.6p1]
# ./configure --prefix=/usr --sysconfdir=/etc/ssh
完成后执行
make
:
[root@bogon openssh-7.6p1]
# make
|
make完成后先不要make install,备份旧的ssh并易名
1
|
[root@yyxh129openssh-7.6p1]
# mv /etc/ssh/ /etc/sshbak
|
或用下面,推荐用上面备份
make完成后先不要make install,先卸载旧版的openssh
1
|
[root@bogon openssh-7.6p1]
# rpm -e --nodeps `rpm -qa | grep openssh`
|
完成后执行make install:
1
|
[root@bogon openssh-7.6p1]
# make install
|
查看下安装结果:
[root@bogon openssh-7.6p1]# ssh -V
至此编译全部安装完成
三、ssh相关配置
1、配置sshd服务:
复制启动文件到/etc/init.d/下并命名为sshd(原先存在旧启动脚本备份易名):
1
|
[root@bogon openssh-7.6p1]
# cp contrib/redhat/sshd.init /etc/init.d/sshd
|
加入开机启动:
1
|
[root@bogon openssh-7.6p1]
# chkconfig --add sshd
|
2、配置允许root使用ssh:
openssh7.6后默认root用户是不能用ssh远程登录的(但普通用户是可以ssh远程登录的),需要修改配置文件:
1
2
3
4
|
[root@bogon openssh-7.6p1]# vim /etc/ssh/sshd_config
找到#PermitRootLoginprohibit-password项,去掉注释并把prohibit-password改为yes
PermitRootLogin yes
配置允许root用户远程登录
|
这一操作很重要!很重要!很重要!重要的事情说三遍,因为openssh安装好默认是不执行sshd_config文件的,所以即使在sshd_config中配置允许root用户远程登录,但是不加上这句命令,还是不会生效!
1
2
3
|
vim
/etc/init
.d
/sshd
在 ‘$SSHD $OPTIONS &&success || failure’这一行上面加上一行如下:
{OPTIONS=
"-f /etc/ssh/sshd_config"
}
|
保存退出
重启ssh服务:
1
|
[root@bogon openssh-7.6p1]
# service sshd restart
|
至此升级/安装完成。
AllowUsers tom