【Linux】Centos 8 默认OpenSSH 升级OpenSSH9.8【升级其他OpenSSH版本通用】

👨‍🎓博主简介

🏅CSDN博客专家

🏅云计算领域优质创作者

🏅华为云开发者社区专家博主

🏅阿里云开发者社区专家博主

💊交流社区: 运维交流社区 欢迎大家的加入!

🐋 希望大家多多支持,我们一起进步!😄

🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

文章声明

文章声明:此文基于实操撰写 生产环境:此文升级是基于centos8默认的openssh 8.0p1升级9.8p1

ssh -V查看版本是:OpenSSH_8.0p1, OpenSSL 1.1.1k

问题关键字:OpenSSH 升级, OpenSSH 更新, OpenSSH 漏洞修复

漏洞信息:SSH Terrapin 前缀截断漏洞(CVE-2023-48795)

漏洞等级:中级

漏洞描述及风险

SSH Terrapin 前缀截断漏洞(CVE-2023-48795)详细描述:

该漏洞被称为 Terrapin 攻击,是一种中间人攻击。攻击者可以截断 SSH 握手的重要部分,而无需关闭 SSH 连接,从而绕过完整性检查并降低连接的安全性。具体来说,是 SSH Binary Packet Protocol (BPP) 的实现存在缺陷,导致攻击者可以利用精心构造的数据包,在特定条件下截断 SSH 通信内容。

  • 影响范围:

OpenSSH < 9.6

  • 修复措施:

升级 OpenSSH <= 9.6

风险:

  1. 升级OpenSSH时,由于远程登录,在卸载OpenSSH后Xshell可能与主机失联。
  2. 开启多个xshell标签连接同一台主机并开启top命令挂起对话框,减少与主机失联风险。
  3. 升级OpenSSH以后,会影响免密登录,需重新配置密钥。
  4. 在升级前一定要备份原有的配置文件,以防出现意外情况。

此文升级是基于8.0p1升级9.8p1

安装所需依赖

bash 复制代码
yum install -y gcc gcc-c++ make zlib zlib-devel pam-devel perl-IPC-Cmd perl-CPAN openssl-devel

安装openssl

选择安装,并不是必须要安装。

下载并编译安装openssl

下载之后上传到服务器上,进行编译安装。

bash 复制代码
#解压openssl:
tar -xf openssl-3.3.1.tar.gz -C /usr/src/

# 切换到解压后的路径
cd /usr/src/openssl-3.3.1/
# 设置配置
./config --prefix=/usr/local/openssl -d shared
#  编译安装
make -j4 && make install
# 大约 10-20 分钟左右

备份旧的openssl文件并替换新的

可以先查看目前的openssl版本,然后备份的时候可以根据当前版本号来进行备份。

查看命令:openssl version
注意:需提前看看目录下有没有这个文件在进行备份。

bash 复制代码
mv /usr/bin/openssl /usr/bin/openssl-1.1.1k
mv /usr/lib64/openssl /usr/lib64/openssl-1.1.1k
mv /usr/lib64/libssl.so /usr/lib64/libssl.so-1.1.1k
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/include/openssl /usr/include/openssl
ln -sf /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

查看openssl版本

bash 复制代码
[root@localhost lib64]# openssl version
OpenSSL 3.3.1 4 Jun 2024 (Library: OpenSSL 3.3.1 4 Jun 2024)

已经升级到了openssl 3.3.1版本,没问题。

安装openssh

查看、备份并卸载原有OpenSSH

确保终端一直连接 断开远程连接后就不能连不上了,可以多开几个终端,然后使用top命令持续运行,避免超时退出连接。

bash 复制代码
# 查看当前安装包
[root@localhost ~]# rpm -qa | grep openssh
openssh-server-8.0p1-10.el8.x86_64
openssh-8.0p1-10.el8.x86_64
openssh-clients-8.0p1-10.el8.x86_64
openssh-askpass-8.0p1-10.el8.x86_64


# 查看当前OpenSSH版本(Centos8 默认使用OpenSSH_8.0p1)
[root@localhost ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021

# 备份现有的SSH配置及命令
mv /etc/ssh/ /etc/ssh-8.0p1
mv /usr/sbin/sshd /usr/sbin/sshd-8.0p1
mv /usr/bin/ssh /usr/bin/ssh-8.0p1
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen-8.0p1

# 如果您是第一次升级,备份/etc/init.d/sshd时会不存在,不影响后续操作
[root@localhost ~]# mv /etc/init.d/sshd /etc/init.d/sshd-8.0p1
mv: 无法获取'/etc/init.d/sshd' 的文件状态(stat): No such file or directory

# 卸载现有OpenSSH
rpm -e $(rpm -qa| grep openssh) --nodeps

提示移除失败不用担心,因为我们已经给他备份成其他名字了。

下载 openssh9.8p1 的安装包:

bash 复制代码
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

解压并编译安装openssh9.8p1

bash 复制代码
#解压openssh:
tar -xf openssh-9.8p1.tar.gz -C /usr/src/

# 切换到解压后的路径
cd /usr/src/openssh-9.8p1/
# 设置配置【二选一】
# 如果需要使用新安装的openssl,就在编译的时候指定openssl安装路径(--with-ssl-dir),在安装完成之后使用ssh -V查看的时候就是openssl-3.3.1。
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl/ --without-openssl-header-check --with-pam --with-privsep-path=/var/lib/sshd --with-md5-passwords --with-zlib
# 默认不指定openssl就使用的是系统自带的openssl-1.1.1k,在安装完成之后使用ssh -V查看的时候就是openssl-1.1.1k。
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir --without-openssl-header-check --with-pam --with-privsep-path=/var/lib/sshd --with-md5-passwords --with-zlib

#  编译安装
make -j4 && make install

复制ssh相关配置文件并添加远程登陆配置

bash 复制代码
# 复制启动文件到/etc/init.d/下并命名为sshd
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
# 复制命令
cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh
cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen


echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

启用sshd,生成服务配置文件,并重启服务

  • 使用/etc/init.d/sshd 方式启动服务
bash 复制代码
#重启sshd服务
/etc/init.d/sshd restart
#查看服务运行状态
/etc/init.d/sshd status
#添加开机启动
chkconfig --add sshd
#查看升级后ssh版本
ssh -V
  • 使用systemctl 方式启动服务
bash 复制代码
# 启用sshd,生成服务启动配置文件
[root@localhost openssh-9.8p1]# systemctl enable sshd
sshd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig sshd on

# 或者自己写一个也行【二选一】
# 配置service启动文件
vim /etc/systemd/system/sshd.service

[Unit]
Description=OpenSSH server daemon
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 重启服务
[root@localhost openssh-9.8p1]# systemctl restart sshd
# 查看服务状态
[root@localhost openssh-9.8p1]# systemctl status sshd

验证升级是否成功

bash 复制代码
[root@localhost openssh-9.8p1]#  ssh -V
OpenSSH_9.8p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021

版本没问题新开窗口再次连接此服务器,可以连上就没问题。

相关专栏

专栏标题 专栏链接
《OpenSSH 系列》 https://blog.csdn.net/liu_chen_yang/category_12463139.html
《Linux从入门到精通》 https://blog.csdn.net/liu_chen_yang/category_10887074.html
《Linux服务器安全》 https://blog.csdn.net/liu_chen_yang/category_12390514.html

相关文章

文章标题 文章链接
基于Centos7上测试
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_8.7p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/130484944
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/131398113
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/133460612
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.4p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/133697104
【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/136536352
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/133460539
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/134717718
【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/136327961
【Linux】 OpenSSH_9.3p2 升级到 OpenSSH_9.4p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/133682882
基于Centos8上测试
【Linux】Centos 8 升级OpenSSH9.8【升级其他OpenSSH版本通用】 https://liucy.blog.csdn.net/article/details/150848861
【Linux】 OpenSSH_9.8p1 升级到 OpenSSH_10.0p1(亲测无问题,建议收藏) https://liucy.blog.csdn.net/article/details/150921048
相关推荐
心灵宝贝4 小时前
CentOS 7 安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 的详细步骤
linux·运维·centos
mjx65305 小时前
windows查看端口使用情况,以及结束任务释放端口
linux
九皇叔叔6 小时前
Linux Shell 函数:从定义到实战,让脚本更高效
linux·运维·chrome·shell
璞致电子9 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
第四维度49 小时前
【全志V821_FoxPi】9-2 Linux IIC驱动MPU6050
linux·传感器·tina·mpu6050·v821
isyangli_blog9 小时前
(6)数据中心、台式(塔式)服务器、机架式服务器、刀片式服务器
运维·服务器
tq029 小时前
Cookie和Seeion在客户端和服务端的角色作用
运维·服务器·安全
mjx653010 小时前
PyTorch快速入门
linux
Miki Makimura10 小时前
Reactor 模式实现:从 epoll 到高并发调试
运维·服务器·c++·学习
00后程序员张11 小时前
【Python】基于 PyQt6 和 Conda 的 PyInstaller 打包工具
运维·服务器·数据库