升级openssh【RedHat/CentOS 7.2-1511】

FileName: upgrade opensshd-linux7.2_1511-2018.txt

注1:本文档已在如下版本测试通过 RedHat/CentOS 7.2-1511
注2:本文采用新安装方式,保留已有版本的openssl、openssh、zlib,好处是可以回退旧版本。

首先配置yum,用于安装可能需要的package

■■挂载OS的iso镜像
参见《upgrade opensshd-linux-2018.txt》

■■yum配置-local
参见《upgrade opensshd-linux-2018.txt》

■■配置telnet服务、gcc编译器
目的:便于远程操作、配置新版本的openssh,同时确保不会因为升级SSH失误导致无法远程登陆主机

■安装telnet服务相关服务xinetd,启动,并enable
yum install xinetd
systemctl start xinetd
systemctl enable xinetd.service

■安装telnet服务,启动,并enable
yum install telnet*
systemctl start telnet.socket
systemctl enable telnet.socket

■7.1新增加了防火墙服务,暂时关闭防火墙服务
systemctl stop firewalld

■此时无法远程telnet用root登陆,需修改安全tty配置
mv /etc/secuertty /etc/securetty.old
此时可确认远程telnet登陆主机。

■升级openssh需gcc编译器,确认是否安装
yum info gcc
如没有安装,则安装:
yum install gcc

■■安装新版本zlib
参见《upgrade opensshd-linux-2018.txt》

■■安装新版本openssl,保留已有的openssl
注:RedHat/CentOS 7.2无需升级openssl,系统自带的openssl版本1.0.1e可以直接使用。

■■安装新版本openssh,保留已有的openssh
下载相关源码【版本7.6p1】
www.openssh.com

■备份已有的ssh
mv /etc/ssh /etc/ssh.old

■配置、编译、安装ssh
tar xvfz openssh-7.6p1.tar.gz
cd openssh-7.6p1
./configure --prefix=/usr/local/ssh --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-md5-passwords
make
make install
注:prefix指定安装路径/usr/local/ssh;sysconfdir指定配置文件路径;with-zlib指定新版本zlib路径;with-pam指定启用pam支持;

■问题
问题处理参见《upgrade opensshd-linux-2018.txt》

■配置sshd系统服务
查看原有sshd的服务配置信息:
[root@cos72 ssh]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
修改/usr/lib/systemd/system/sshd.service,把sshd路径指向新编译版本的路径:
ExecStart=/usr/local/ssh/sbin/sshd -D $OPTIONS

■修改PAM配置
备份原pam配置:
cp /etc/pam.d/sshd /etc/pam.d/sshd.old
从源码编译目录拷贝新的pam配置到系统目录:
cp contrib/sshd.pam.generic /etc/pam.d/sshd
注意,这里新的pam配置文件的lib路径都有前缀“/lib/security/”,需要修改为正确的路径,否则会在/var/log/secure里面看到无法找到lib的报错,导致pam无法生效!将路径前缀“/lib/security/”删掉即可。

■修改sshd配置【make install时自动生成新sshd配置文件】
参考原sshd配置/etc/ssh.old/sshd_config,修改新sshd配置/etc/ssh/sshd_config。
ssh端口号是否是22
#Port 22
是否允许root远程登陆
#PermitRootLogin prohibit-password
PermitRootLogin yes
sshd默认没打开PAM支持
UsePAM yes

■重新启动sshd服务
systemctl restart sshd
第一次重启sshd会有提示错误:
Warning: sshd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
按提示reload即可:
[root@cos72 ssh]# systemctl daemon-reload

■确认升级后的版本
telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6

■验证可以远程ssh登陆以后,可以关闭、卸载telnet服务及xinetd服务
systemctl stop telnet.socket
yum remove telnet*
systemctl stop xinetd
yum remove xinetd

发表评论

电子邮件地址不会被公开。 必填项已用*标注