记一次生产升级Openssh的过程,方法都是网上找的,只是自己做了一些整合处理。

主要分为三个步骤

  1. 搭建telnet服务器实现远程登陆管理,防止OpenSSH升级失败,服务器变成砖头机,此情况只能重装服务器;
  2. 卸载原有的OpenSSH,此步骤可跳过直接升级新版OpenSSH,若直接升级不成功再去卸载原有的OpenSSH,一般大家会用yum安装初始的OpenSSH,但yum源里面现在最高的版本是7.4的,再高级的版本得去下载安装包;
  3. 升级新版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

centos8 开启 ssh centos8.2 ssh_服务器

[root@i-98F139C5 ~]# systemctl status telnet.socket

centos8 开启 ssh centos8.2 ssh_centos8 开启 ssh_02


(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*

centos8 开启 ssh centos8.2 ssh_服务器_03

(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

centos8 开启 ssh centos8.2 ssh_服务器_04


(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