记一次生产升级Openssh的过程,方法都是网上找的,只是自己做了一些整合处理。
主要分为三个步骤
- 搭建telnet服务器实现远程登陆管理,防止OpenSSH升级失败,服务器变成砖头机,此情况只能重装服务器;
- 卸载原有的OpenSSH,此步骤可跳过直接升级新版OpenSSH,若直接升级不成功再去卸载原有的OpenSSH,一般大家会用yum安装初始的OpenSSH,但yum源里面现在最高的版本是7.4的,再高级的版本得去下载安装包;
- 升级新版OpenSSH 8.3,此处我采用tar.gz包,不采用rpm包;
1.telnet服务器架设
(1)查看是否安装telnet服务器
[root@i-98F139C5 ~]# rpm -qa telnet-server
(2)安装telnet-server
[root@i-98F139C5 ~]# yum install -y telnet-server
(3)再次查看是否安装telnet-server
[root@i-98F139C5 ~]# rpm -qa telnet-server
telnet-server-0.17-64.el7.x86_64//说明已经安装了
(4)查看是否安装xinetd服务
//原因:telnet服务不是独立的服务,在xinetd服务下,有xinetd服务管理。
[root@i-98F139C5 ~]# rpm -qa xinetd
(5)安装xinetd服务
[root@i-98F139C5 ~]# yum install xinetd
(6)将xinetd服务和telnet服务设置为开机自启动
[root@i-98F139C5 ~]# systemctl enable xinetd.service
[root@i-98F139C5 ~]# systemctl enable telnet.socket
Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
(7)启动xinetd服务和telnet服务
[root@i-98F139C5 ~]# systemctl start xinetd.service
[root@i-98F139C5 ~]# systemctl start telnet.socket
(8)查看xinetd服务和telnet服务的状态(非必须步骤)
[root@i-98F139C5 ~]# systemctl status xinetd.service
[root@i-98F139C5 ~]# systemctl status telnet.socket
(9)开启root登录,通过关闭安全的方法实现
[root@i-98F139C5 ~]# cd /etc/
[root@i-98F139C5 ~]# ls secure*
securetty
[root@i-98F139C5 ~]# mv securetty securetty.bak
注:也可以securetty的末尾加上pts/0 pts/1的方法开启root登录,这样就不用关闭安全了。
(10)配置防火墙规则
[root@i-98F139C5 ~]# firewall-cmd --permanent --add-port=23/tcp //开放23端口
success
[root@i-98F139C5 ~]# firewall-cmd --reload //重新加载防火墙,使改动生效
success
注:也可以securetty的末尾加上pts/0 pts/1的方法开启root登录,这样就不用关闭安全了。
(11)telnet测试
[root@i-98F139C5 ~]# telnet 127.0.0.1
2.OpenSSH卸载
(1)查看已安装的openSSH(yum安装方式)
[root@i-98F139C5 ~]# rpm -qa openssh*
(2)卸载
[root@i-98F139C5 ~]# yum remove openssh*
//有事需要用到rpm -e --nodeps 包名 命令
(3)重新安装yum源的OpenSSH(此步骤为升级失败的时候,重新用yum安装回OpenSSH)
[root@i-98F139C5 ~]# yum install openssh openssh-server openssh-clients
(4)修改配置文件
[root@i-98F139C5 ~]# vim /etc/ssh/sshd_config
(5)启动sshd
[root@i-98F139C5 ~]# systemctl start sshd
[root@i-98F139C5 ~]# systemctl enable sshd #设置开机自启
3.升级OpenSSH 8.3
(1)准备相应的包,下载openssh8.3升级包及依赖的zlib和openssl。
openssh-8.3p1.tar.gz、zlib-1.2.11.tar.gz、openssl-1.1.1g.tar.gz
(2)解压包
[root@i-98F139C5 ~]# tar --no-same-owner -zxvf zlib-1.2.11.tar.gz
[root@i-98F139C5 ~]# tar --no-same-owner -zxvf openssh-8.3p1.tar.gz
[root@i-98F139C5 ~]# tar --no-same-owner -zxvf openssl-1.1.1g.tar.gz
(3)编译安装zlib
[root@i-98F139C5 ~]# cd zlib-1.2.11
[root@i-98F139C5 ~]# ./configure --prefix=/usr/local/zlib
[root@i-98F139C5 ~]# make && make install
(4)编译安装openssl
[root@i-98F139C5 ~]# cd openssl-1.1.1g
[root@i-98F139C5 ~]# ./config --prefix=/usr/local/ssl -d shared
[root@i-98F139C5 ~]# make && make install
[root@i-98F139C5 ~]# echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
[root@i-98F139C5 ~]# ldconfig -v
(5)编译安装openssh
[root@i-98F139C5 ~]# cd openssh-8.3p1
[root@i-98F139C5 ~]# ./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
[root@i-98F139C5 ~]# make && make install
(6)修改配置文件sshd_config
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config
注:多次重装,每次最好检查一下配置文件,看有没有多次重复添加配置信息的情况,本人粗心遇到过这个问题
(7)备份原有文件,并将新的配置复制到指定目录
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
注:嫌麻烦也可以不备份
(8)启动或重启ssh
[root@i-98F139C5 ~]# systemctl start sshd
[root@i-98F139C5 ~]# systemctl restart sshd
[root@i-98F139C5 ~]# systemctl enable sshd #设置开机自启
(9)验证更新后的版本信息
[root@i-98F139C5 ~]# ssh -V