RHEL6和CentOS7升级openssh详细过程
升级的前提是需要将所需要的包和依赖都安装有,在此我推荐将系统的最新的镜像进行挂载,挂载到你需要升级的服务器,或者配置好远程yum源。
升级openssh的几大关键:
- 升级需要关闭防火墙服务、selinux。
- 升级需要开启telnet,防止升级失败无法登陆。
- 升级需要对应版本的:gcc、make、perl、zlib、zlib-dvel、pam、pam-devel、openssl-devel;
- 升级openssh;
- 升级完openssh后,原公钥失效,信任关系需要重新配置。
===================================================================
一、下载openssh包.
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz
或者官网直接下载,再传到需要升级的服务器上。
这是阿里的官方源下载:https://opsx.alibaba.com/mirror?lang=zh-CN
二、关闭防火墙、selinux。
# systemctl disable firewalld
# systemctl stop firewalld
---------------------------RHEL用以写命令关闭--------------------------------
# /sbin/chkconfig iptable stop
# vim /etc/selinux/config
SELINUX=disabled //将SELINUX设置为disabled
三、安装telnet,用于升级ssh,防止升级失败。
1)
# yum -y install xinetd telnet telnet-server
2)注释掉下面这行,允许root通过telnet登陆:
# vim /etc/pam.d/login
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
3)
# echo 'pts/0' >>/etc/securetty
# echo 'pts/1' >>/etc/securetty
4) 注释下面这行,允许root用户远程登陆:
# vim /etc/pam.d/remote
auth required pam_securetty.so
5) 重启telnet和xinetd服务
# systemctl start telnet.socket
# systemctl start xinetd
# systemctl enable xinetd
# systemctl enable telnet.socket
------------------RHEL用以下命令--------------------------------
# service xinetd restart
6)如果还有其他防火墙开启,需要将23端口策略开放,再执行5)步骤。同时防止升级失败,请在桌面端telnet连接到升级的服务器上。
四、安装依赖包。
# yum install openssl-devel pam-devel zlib-devel gcc make perl openssl
五、升级openssh。
# mv /etc/ssh/ /etc/ssh.bak //将原来是ssh备份,执行此操作后就不能再远程ssh进行连接。
解压openssh-7.8p1.tar.gz包
# cd openssh-7.8p1
# ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh
# make
# make install
# cp contrib/redhat/sshd.init /etc/init.d/sshd //配置启动脚本
# chmod +x /etc/init.d/sshd
# chkconfig --add sshd //添加开机启动
# systemctl start sshd
# systemctl enable sshd
-----------------RHEL-----------------------
# /sbin/chkconfig sshd on
六、配置ssh服务以及公钥。
1)去掉注释。
# vim /etc/ssh/sshd_config
PermitRootLogin yes
2)启动ssh服务
# service sshd start
3)配置ssh命令:这里很容易出错搞混,需要注意。
# mv /usr/sbin/sshd /usr/sbin/sshd_bak
# mv /usr/bin/ssh /usr/bin/ssh_bak
# cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
# cp /usr/local/openssh/bin/ssh /usr/bin/ssh
# ssh -V //刷新ssh版本
4)拷贝公钥
# cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
七、检查是否成功,复原无关的配置文件。
1) 重新建立新的连接,检查版本是否正确。
2) 将配置复原。
取消注释掉下面这行,禁止root通过telnet登陆:
# vim /etc/pam.d/login
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
取消注释下面这行,禁止root用户远程登陆:
# vim /etc/pam.d/remote
auth required pam_securetty.so
复原防火墙
================================================================
@@想安全无误的升级ssh,本人建议最好是使用最新的镜像包源。当然也可以自己将全部缺少的依赖包下载做成仓库的形式,但是我觉得太麻烦,而且依赖包之间版本也需要配对。内网的情况下,我就遇到了升级ssh的坑,导致系统重装。@@