在CentOS7系统中构建和使用OpenSSH10.0p1的RPM包           

在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

本站声明

本站所有文章均由作者(hxwsq_华)个人整理和发布,仅供学习和参考,严禁任何形式的复制和转载!
如有疑问,请点击此处给作者发邮件,谢谢!