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
文章评论