在CentOS7系统中构建和使用OpenSSH10.0p1的RPM包
作者 hxwsq_华 于 2024-11-27 14:20:00.0 发表于 浙江 最近修改于 2025-04-14 10:40:30.0 本文浏览量:121人次
一、说明
1.1 操作系统版本
本文使用的操作系统版本:CentOS 7.9
cat /etc/centos-release

1.2 准备工作
1.OpenSSH10.0p1源码包(下载)
2.OpenSSL3.0.16源码包(下载)
3.ssh-askpass源码包(下载)
4.SPEC文件(下载)
5.创建一个普通用户来执行构建RPM包的工作(本文使用的普通用户为wxh)
useradd -G wheel wxh
echo "password" | passwd --stdin wxh

二、构建RPM包(以普通用户wxh操作)
2.1 安装所需的软件包
---安装构建RPM包所需的工具包
sudo yum -y install rpm-build rpmdevtools
---安装编译OpenSSH所需的依赖软件
sudo yum -y install gcc imake pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel perl perl-IPC-Cmd

2.2 创建构建工作目录
rpmdev-setuptree

2.3 获取OpenSSH、OpenSSL和ssh-askpass源码包(或直接上传源码包至~/rpmbuild/SOURCES目录下)

2.4 创建SPEC文件(或直接上传SPEC文件至~/rpmbuild/SPECS目录下)

2.5 构建RPM包
cd ~/rpmbuild/SPECS/ && rpmbuild -bb openssh.spec

构建完成后的RPM包存放路径:~/rpmbuild/RPMS/x86_64/(openssh-askpasss和openssh-debuginfo的RPM包可以删除)

三、升级CentOS7系统的OpenSSH版本(使用root用户操作)
【注意】升级OpenSSH版本前,如果条件允许,最好先开启系统的telnet远程服务,以防OpenSSH升级过程中SSH连接意外断开
3.1 上传构建好的RPM包至CentOS7服务器

3.2 备份原SSH配置
---备份SSH服务的主配置目录
[[ -d /etc/ssh ]] && mv /etc/ssh /etc/ssh.bak
---备份SSH服务的PAM配置文件
[[ -f /etc/pam.d/sshd ]] && mv /etc/pam.d/sshd /etc/pam.d/sshd.bak
---备份SSH服务的单元文件
if [[ -d /run/systemd/system && -f /usr/lib/systemd/system/sshd.service ]]; then
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
systemctl daemon-reload
fi

3.3 安装新构建的RPM包升级OpenSSH版本
rpm -Uvh *.rpm --nodeps

3.4 更改key文件权限
chmod -v 600 /etc/ssh/ssh_host_*_key

3.5 修改PAM配置
cat << 'EOF' > /etc/pam.d/sshd
#%PAM-1.0
auth substack password-auth
auth include postlogin
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
EOF

3.6 恢复原SSH配置(选做)
---如果原SSH服务端口不是默认的22端口,则升级OpenSSH后需要在/etc/ssh/sshd_config文件中修改SSH端口配置,另外需确保已关闭系统的SELinux功能并在系统防火墙中放通该端口
---如果原SSH配置文件中还有其他配置,可参照原配置在/etc/ssh/sshd_config文件中做相应的修改
3.7 重启SSH服务
service sshd restart

3.8 验证升级后的OpenSSH版本
---此处查询的版本信息应是有误
ssh -V && /usr/sbin/sshd -V

四、回退CentOS7系统的OpenSSH版本(使用root用户操作)
4.1 卸载通过RPM包安装的OpenSSH
rpm -e openssh-10.0p1-1.el7.x86_64 --nodeps
rpm -e openssh-server-10.0p1-1.el7.x86_64 --nodeps
rpm -e openssh-clients-10.0p1-1.el7.x86_64 --nodeps

4.2 使用yum源安装默认版本的OpenSSH
yum -y install openssh openssh-server openssh-clients

4.3 还原SSH配置
---还原SSH服务的主配置目录
rm -rf /etc/ssh
mv /etc/ssh.bak /etc/ssh
---还原SSH服务的PAM配置文件
rm -f /etc/pam.d/sshd
mv /etc/pam.d/sshd.bak /etc/pam.d/sshd

4.4 启动SSH服务
systemctl daemon-reload
systemctl enable --now sshd.service

4.5 查看回退后的OpenSSH版本
ssh -V

五、文档更新记录
日期 | 更新记录 |
2024-11-27 | 新建文档,OpenSSH版本为OpenSSH9.9p1 |
2025-04-01 | 更新OpenSSH版本至OpenSSH9.9p2 |
2025-04-14 | 更新OpenSSH版本至OpenSSH10.0p1 |