软件更新-openssh和openssl-centos

说明

centos7存在关于openssh的安全漏洞,需打补丁。 环境描述:联网,centos7.9公版云主机,有云端控制台,可在无ssh时访问系统。

访问环境

root用户ssh到云主机

查询信息

查询ssh版本

bash 复制代码
ssh -V

查询openssl

bash 复制代码
openssl version

注意:低于1.1.1的必须升级至1.1.1及以上版本

查询opeensl的位置及安装的软件

bash 复制代码
which openssl
rpm -qa | grep openssl

查询命令位置

bash 复制代码
which -a ssh
which -a sshd

查询操作系统版本

bash 复制代码
cat /etc/os-release

查询服务状态 此处用于规避纠纷扯皮。

bash 复制代码
systemctl status sshd

备份数据

bash 复制代码
mkdir -p /opt/backup/{ssh,pam,sshd}
cp -r /etc/ssh/* /opt/backup/ssh
cp -r /etc/pam.d/* /opt/backup/pam
cp -r /etc/sysconfig/sshd/* /opt/backup/sshd

下载软件

下载openssl 浏览器访问openssl-library.org/source/ 推荐选择LTS标记的版本 上传至云主机的/opt目录

下载openssh 浏览器访问www.openssh.org/portable.ht... 任意选择下载通道,例如 INSTALL是安装说明 README是整体说明 tar.gz是本次使用的软件包。推荐下载最新版本。 上传至云主机的/opt目录

更新openssl

注意,高危操作,操作失误会导致系统多个重要内置工具故障。

安装基础环境

bash 复制代码
yum -y groupinstall "Development Tools"
yum -y install wget zlib-devel perl-core pcre-devel

解压文件

bash 复制代码
tar -zxf openssl-3.5.6.tar.gz
cd openssl-3.5.6

配置代码

bash 复制代码
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib

编译代码

bash 复制代码
make -j$(nproc)

测试代码 可选。时间充裕且流程严谨的环境需操作。摸鱼必备。

bash 复制代码
make test

安装

bash 复制代码
make install

备份旧版openssl

bash 复制代码
mv /usr/bin/openssl /usr/bin/openssl.old

配置软链接

bash 复制代码
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

更新动态库

bash 复制代码
echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl3.conf
ldconfig

查询配置

bash 复制代码
ldconfig -p | grep ssl
ldconfig -p | grep crypto

查询版本

bash 复制代码
openssl version

更新完成且成功。

卸载openssh

注意:卸载后,将无法新建会话进行ssh访问,原有ssh会话不关闭时,可继续使用,建议后续操作保持ssh会话。应确保自己可以通过服务器的BMC界面或云平台的VNC界面访问操作系统,在ssh会话断开时,随时可访问。

查询已安装的ssh软件包

bash 复制代码
rpm -qa | grep openssh
yum list installed | grep openssh
rpm -ql openssh-server

完整卸载旧版ssh

bash 复制代码
systemctl stop sshd
systemctl disable sshd
yum remove -y openssh-server openssh-clients openssh
rm -rf /etc/ssh/*
rm -rf /etc/pam.d/sshd
rm -rf /etc/sysconfig/sshd
rm -rf /var/empty/sshd

安装新版openssh

解压

bash 复制代码
tar -zxf openssh-10.3p1.tar.gz
cd openssh-10.3p1

配置软件

bash 复制代码
yum makecache

查询基础软件是否存在

bash 复制代码
gcc --version
make --version
autoconf --version
automake --version
libtool --version
pkg-config --version

安装依赖库

bash 复制代码
yum install -y pam-devel

验证必备内容

bash 复制代码
rpm -qa | grep devel | grep -E "zlib|openssl|pam"

安装扩展功能库 可选。推荐。

bash 复制代码
yum install -y libedit-devel libselinux-devel krb5-devel openldap-devel

安装FIDO2支持 可选,忘记操作了,没记录。

安装安装 LDNS(DNSSEC 支持) 可选,忘记操作了,没记录。

配置专用账户

bash 复制代码
groupadd -f -r sshd
useradd -c "Privilege-separated SSH" -g sshd -s /bin/false -M sshd

配置代码

bash 复制代码
./configure \
  --prefix=/usr \
  --sysconfdir=/etc/ssh \
  --with-ssl-dir=/usr/local/openssl \
  --with-pam \
  --with-zlib \
  --with-md5-passwords \
  --with-privsep-user=sshd \
  --with-privsep-path=/var/lib/sshd

编译代码

bash 复制代码
  make -j$(nproc)

安装

bash 复制代码
make install

验证

bash 复制代码
ssh -V
sshd -V

配置服务持久化 执行以下命令 服务1

bash 复制代码
cat > /usr/lib/systemd/system/sshd.service <<EOF
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D \$OPTIONS
ExecReload=/bin/kill -HUP \$MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
EOF

服务2

bash 复制代码
cat > /usr/lib/systemd/system/sshd-keygen.service <<EOF
[Unit]
Description=OpenSSH server key generation
Before=sshd.service

[Service]
ExecStart=/usr/sbin/sshd-keygen
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

重新加载服务,查询验证

bash 复制代码
systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
systemctl status sshd
netstat -lntp | grep sshd

访问验证 ssh 账户名@localhost 输入密码登录成功即可。root用户登录需要在配置文件修改Permi开头的参数。 重启操作系统,确认配置持久生效。 说明更新成功。

相关推荐
程序员阿黄7 分钟前
基于 Django 与 Vue 3 的智能实验室预约系统设计与实现
后端·python·mysql·django·vue·毕设
打工仔折腾 AI23 分钟前
用 Shell 脚本自动部署 mysqld_exporter 并接入 Prometheus 远程抓取
人工智能·后端·python·性能优化·ai agent 实战
毅炼24 分钟前
不写多语言 SDK,怎么让 Python、Go、Node 服务接入注册中心?
java·后端·系统架构·gateway
Methy32 分钟前
IoTHub半个月崩了五次?都是裸rethrow惹的祸
服务器·c++·后端
我不会起名字32241 分钟前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go
回家路上绕了弯1 小时前
AI 编程助手为什么反复读取同一份上下文?如何减少无效重复
后端
Lost of 程序猿1 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
名字还没想好☜1 小时前
Spring Boot 优雅停机实战:等在途请求处理完再退出,配合 K8s preStop 别丢请求
java·后端·spring
摇滚侠1 小时前
《Spring Boot 3:高级与架构设计》第 1 章 Bean 与 BeanDefinition 个人理解 2
java·spring boot·笔记·后端
IT_陈寒2 小时前
Redis主从切换竟让业务卡了3秒?这个坑我替你踩了
前端·人工智能·后端