OpenSSH 10.4p1 - openEuler RPM 打包项目 |
| 发表者:admin分类:Devops2026-07-21 11:23:45 阅读[10] |
OpenSSH 10.4p1 - openEuler RPM 打包项目
RPM包下载地址:
https://gitcode.com/micoder/openssh/releases/v10.4p1
或是以下地址:
https://eulermaker.openeuler.openatom.cn/api/ems1/repositories/gitcode:openEuler-22.03-LTS-SP4:x86_64:MiCoder/
概述
本项目基于 openEuler 系统环境,对 OpenSSH 10.4p1 源码进行 RPM 打包构建。支持 openEuler 22.03 LTS 和 24.03 LTS。
项目结构
openssh/
├── openssh-10.4p1.tar.gz # OpenSSH 10.4p1 源码包
├── openssh-10.4p1.spec # RPM 规范文件
├── build.sh # 自动构建脚本
├── sshd.pam # PAM 配置
├── sshd.service # Systemd 服务单元
├── sshd.sysconfig # 服务环境变量配置
├── sshd_config # 自定义 SSH 服务端配置
└── README.md # 本文档
构建产物
构建完成后生成以下 RPM 子包:
RPM 包名 说明 包含内容 openssh核心包 ssh-keygen, ssh-keysign, moduliopenssh-clients客户端包 ssh, scp, sftp, ssh-agent, ssh-add, ssh-keyscan, ssh-copy-id, ssh-pkcs11-helper, ssh-sk-helperopenssh-server服务端包 sshd, sshd-auth, sshd-session, sftp-server, Systemd 服务, PAM 配置openssh-askpass图形密码对话框 gnome-ssh-askpass, profile.d 脚本openssh-help文档和 man 手册 所有 man 手册页和文档
环境要求
支持的操作系统
系统 版本 架构 openEuler 22.03 LTS x86_64, aarch64 openEuler 24.03 LTS x86_64, aarch64 openEuler 24.09 x86_64, aarch64
完整依赖清单
构建依赖 (BuildRequires)
包名 版本要求 用途 autoconf - 重新生成 configure 脚本 automake - 自动生成 Makefile gcc - C 编译器 make - 构建工具 dos2unix - 转换换行符 groff - 格式化 man 手册 util-linux - 基础工具集 perl-interpreter - Perl 解释器(构建脚本辅助) perl-generators - Perl 依赖生成器 perl-podlators - POD 格式转换 zlib-devel - 压缩库 openssl-devel >= 1.1.1 SSL/TLS 加密库 pam-devel - PAM 认证框架 libselinux-devel >= 2.3-5 SELinux 安全策略 audit-libs-devel >= 2.0.5 Linux 审计系统 krb5-devel - Kerberos 5 认证 systemd-devel - Systemd 服务集成 p11-kit-devel - PKCS#11 智能卡支持 openldap-devel - LDAP 支持 gtk2-devel - GTK2 图形库(askpass) libX11-devel - X11 图形库(askpass) libedit-devel - 行编辑和历史记录(sftp) ncurses-devel - 终端控制库 xauth - X11 认证工具 gnupg2 - GPG 签名验证 crypto-policies - 加密策略
运行时依赖 (Requires)
包名 版本要求 归属子包 /sbin/nologin - openssh libselinux >= 2.3-5 openssh audit-libs >= 1.0.8 openssh openssh-server = %{version}-%{release} openssh crypto-policies >= 20180306-1 clients, server pam >= 1.0.1-3 server shadow - server (pre) systemd - server
推荐安装 (Recommends)
包名 用途 p11-kit PKCS#11 智能卡中间件
快速构建
方法一:使用构建脚本(推荐)
# 以 root 身份运行
sudo bash build.sh
脚本会自动完成:
- 安装所有构建依赖
- 设置 RPM 构建环境
- 生成 SRPM 源码包
- 构建二进制 RPM 包
- 输出构建结果
方法二:手动构建
# 1. 安装构建依赖
sudo dnf install -y rpm-build autoconf automake make gcc gcc-c++ \
dos2unix groff util-linux perl-interpreter perl-generators \
perl-podlators zlib-devel openssl-devel pam-devel \
libselinux-devel audit-libs-devel krb5-devel systemd-devel \
p11-kit-devel openldap-devel gtk2-devel libX11-devel \
libedit-devel ncurses-devel xauth gnupg2
# 2. 设置 RPM 构建目录
mkdir -p ~/rpmbuild/{SOURCES,SPECS,SRPMS,RPMS,BUILD,BUILDROOT}
# 3. 拷贝源码和辅助文件
cp openssh-10.4p1.tar.gz ~/rpmbuild/SOURCES/
cp sshd.pam sshd.sysconfig sshd.service sshd_config ~/rpmbuild/SOURCES/
cp openssh-10.4p1.spec ~/rpmbuild/SPECS/
# 4. 构建
rpmbuild -ba ~/rpmbuild/SPECS/openssh-10.4p1.spec
安装
# 安装所有包
sudo rpm -Uvh ~/rpmbuild/RPMS/*/openssh-*.rpm
# 或使用 dnf
sudo dnf localinstall ~/rpmbuild/RPMS/*/openssh-*.rpm
配置说明
服务端配置
- 主配置文件:
/etc/ssh/sshd_config - 扩展配置目录:
/etc/ssh/sshd_config.d/ - PAM 配置:
/etc/pam.d/sshd - 服务环境变量:
/etc/sysconfig/sshd
客户端配置
- 全局配置:
/etc/ssh/ssh_config - 扩展配置目录:
/etc/ssh/ssh_config.d/
服务管理
# 启动服务
sudo systemctl start sshd
# 设置开机自启
sudo systemctl enable sshd
# 查看状态
sudo systemctl status sshd
# 重启服务(重新加载配置)
sudo systemctl restart sshd
已启用的功能特性
特性 说明
PAM 认证可插拔认证模块支持
SELinux 支持安全增强型 Linux 策略
Kerberos 5企业级 Kerberos 认证
Linux Audit系统审计日志
PKCS#11智能卡/U2F 硬件密钥
Systemd现代服务管理
X11 转发图形界面转发
ssh-copy-id便捷密钥分发
seccomp_filter沙箱隔离(x86_64/aarch64)
PIE 安全加固地址空间布局随机化
RELRO/BIND_NOW只读重定位保护
libeditsftp 行编辑历史
注意事项
- FIDO/U2F 测试: 构建过程中禁用了测试套件,因为 FIDO 密钥模拟器在容器/虚拟机环境中可能存在问题。
- seccomp 沙箱: 在 riscv64、loongarch64、sw_64 架构上自动禁用 seccomp_filter 沙箱(这些架构内核支持不完整)。
- 签名文件: 不再需要 Source1 签名文件(.asc),构建过程已移除相关检查。
- 自检测试: 如需运行测试,在 spec 中取消注释
%%check 部分,然后执行 make tests。
版本历史
版本 日期 说明 10.4p1-1 2026-07-20 首次适配 openEuler 的 OpenSSH 10.4p1 打包 10.3p1-1 2026-06-01 基于 openEuler 的 OpenSSH 10.3p1 打包
Spec 文件审查报告
本节记录对 openssh-10.4p1.spec 的全面审查结果,包括功能验证与问题修复。
功能验证
功能 审查结论 验证依据 X11 转发
完整支持BuildRequires: libX11-devel gtk2-devel xauth + --with-xauth=/usr/bin/xauth + sshd_config 默认启用 X11Forwarding + gnome-ssh-askpass 构建与安装ssh-copy-id
完整支持contrib/ssh-copy-id 安装到 %{_bindir} + 手册页安装到 man1 + %files clients 中声明PAM 认证
已启用--with-pam + 自定义 /etc/pam.d/sshd 配置SELinux
已启用--with-selinux + libselinux-devel 构建依赖Kerberos 5
已启用--with-kerberos5 + krb5-devel 构建依赖Linux Audit
已启用--with-audit=linux + audit-libs-devel 构建依赖PKCS#11
自动检测p11-kit-devel 构建依赖,configure 自动启用Systemd
完整集成%systemd_post / %systemd_preun / %systemd_postun_with_restart + sshd.service 单元seccomp 沙箱
条件启用--with-sandbox=seccomp_filter(x86_64/aarch64),riscv64/loongarch64/sw_64 自动禁用PIE 安全加固
已启用LDFLAGS="$LDFLAGS -pie -z relro -z now"libedit
已启用libedit-devel 构建依赖,configure 自动检测askpass 图形对话框
完整支持GTK2 版 gnome-ssh-askpass 构建 + ssh-askpass 符号链接 + profile.d 脚本
审查发现的问题与修复
# 问题描述 严重程度 修复方式 1 BuildRequires 中误用运行时库 audit-libs >= 1.0.8(非 devel 包,且第31行已有 audit-libs-devel >= 2.0.5)
中已删除该冗余条目 2 %install 中创建了 ssh_config.d 目录,但 %files clients 中未声明,rpmbuild 时会报 unpackaged files 错误
高已在 %files clients 中添加 %dir %attr(0755,root,root) %{_sysconfdir}/ssh/ssh_config.d 3 缺少 --with-xauth 配置选项,可能导致 xauth 路径检测失败,影响 X11 转发
中已添加 --with-xauth=/usr/bin/xauth 4 openEuler 2403 构建失败:brp-digest-list 脚本因 SELinux 路径检查失败报 Path is outside buildroot
高添加 BuildRequires: systemd-rpm-macros + %undefine __brp_digest_list
语法结构验证
检查项 结果 %if / %endif 平衡(2个条件块)
全部闭合%package 与 %files 对应(5个子包)
全部匹配Source 声明与 %install 引用对应(4个 Source)
全部引用构建脚本 build.sh shell 语法检查
通过 (bash -n)
OpenSSH 10.4p1 - openEuler RPM 打包项目
RPM包下载地址:
https://gitcode.com/micoder/openssh/releases/v10.4p1
或是以下地址:
https://eulermaker.openeuler.openatom.cn/api/ems1/repositories/gitcode:openEuler-22.03-LTS-SP4:x86_64:MiCoder/
概述
本项目基于 openEuler 系统环境,对 OpenSSH 10.4p1 源码进行 RPM 打包构建。支持 openEuler 22.03 LTS 和 24.03 LTS。
项目结构
openssh/
├── openssh-10.4p1.tar.gz # OpenSSH 10.4p1 源码包
├── openssh-10.4p1.spec # RPM 规范文件
├── build.sh # 自动构建脚本
├── sshd.pam # PAM 配置
├── sshd.service # Systemd 服务单元
├── sshd.sysconfig # 服务环境变量配置
├── sshd_config # 自定义 SSH 服务端配置
└── README.md # 本文档
构建产物
构建完成后生成以下 RPM 子包:
| RPM 包名 | 说明 | 包含内容 |
|---|---|---|
openssh | 核心包 | ssh-keygen, ssh-keysign, moduli |
openssh-clients | 客户端包 | ssh, scp, sftp, ssh-agent, ssh-add, ssh-keyscan, ssh-copy-id, ssh-pkcs11-helper, ssh-sk-helper |
openssh-server | 服务端包 | sshd, sshd-auth, sshd-session, sftp-server, Systemd 服务, PAM 配置 |
openssh-askpass | 图形密码对话框 | gnome-ssh-askpass, profile.d 脚本 |
openssh-help | 文档和 man 手册 | 所有 man 手册页和文档 |
环境要求
支持的操作系统
| 系统 | 版本 | 架构 |
|---|---|---|
| openEuler | 22.03 LTS | x86_64, aarch64 |
| openEuler | 24.03 LTS | x86_64, aarch64 |
| openEuler | 24.09 | x86_64, aarch64 |
完整依赖清单
构建依赖 (BuildRequires)
| 包名 | 版本要求 | 用途 |
|---|---|---|
| autoconf | - | 重新生成 configure 脚本 |
| automake | - | 自动生成 Makefile |
| gcc | - | C 编译器 |
| make | - | 构建工具 |
| dos2unix | - | 转换换行符 |
| groff | - | 格式化 man 手册 |
| util-linux | - | 基础工具集 |
| perl-interpreter | - | Perl 解释器(构建脚本辅助) |
| perl-generators | - | Perl 依赖生成器 |
| perl-podlators | - | POD 格式转换 |
| zlib-devel | - | 压缩库 |
| openssl-devel | >= 1.1.1 | SSL/TLS 加密库 |
| pam-devel | - | PAM 认证框架 |
| libselinux-devel | >= 2.3-5 | SELinux 安全策略 |
| audit-libs-devel | >= 2.0.5 | Linux 审计系统 |
| krb5-devel | - | Kerberos 5 认证 |
| systemd-devel | - | Systemd 服务集成 |
| p11-kit-devel | - | PKCS#11 智能卡支持 |
| openldap-devel | - | LDAP 支持 |
| gtk2-devel | - | GTK2 图形库(askpass) |
| libX11-devel | - | X11 图形库(askpass) |
| libedit-devel | - | 行编辑和历史记录(sftp) |
| ncurses-devel | - | 终端控制库 |
| xauth | - | X11 认证工具 |
| gnupg2 | - | GPG 签名验证 |
| crypto-policies | - | 加密策略 |
运行时依赖 (Requires)
| 包名 | 版本要求 | 归属子包 |
|---|---|---|
| /sbin/nologin | - | openssh |
| libselinux | >= 2.3-5 | openssh |
| audit-libs | >= 1.0.8 | openssh |
| openssh-server | = %{version}-%{release} | openssh |
| crypto-policies | >= 20180306-1 | clients, server |
| pam | >= 1.0.1-3 | server |
| shadow | - | server (pre) |
| systemd | - | server |
推荐安装 (Recommends)
| 包名 | 用途 |
|---|---|
| p11-kit | PKCS#11 智能卡中间件 |
快速构建
方法一:使用构建脚本(推荐)
# 以 root 身份运行
sudo bash build.sh
脚本会自动完成:
- 安装所有构建依赖
- 设置 RPM 构建环境
- 生成 SRPM 源码包
- 构建二进制 RPM 包
- 输出构建结果
方法二:手动构建
# 1. 安装构建依赖
sudo dnf install -y rpm-build autoconf automake make gcc gcc-c++ \
dos2unix groff util-linux perl-interpreter perl-generators \
perl-podlators zlib-devel openssl-devel pam-devel \
libselinux-devel audit-libs-devel krb5-devel systemd-devel \
p11-kit-devel openldap-devel gtk2-devel libX11-devel \
libedit-devel ncurses-devel xauth gnupg2
# 2. 设置 RPM 构建目录
mkdir -p ~/rpmbuild/{SOURCES,SPECS,SRPMS,RPMS,BUILD,BUILDROOT}
# 3. 拷贝源码和辅助文件
cp openssh-10.4p1.tar.gz ~/rpmbuild/SOURCES/
cp sshd.pam sshd.sysconfig sshd.service sshd_config ~/rpmbuild/SOURCES/
cp openssh-10.4p1.spec ~/rpmbuild/SPECS/
# 4. 构建
rpmbuild -ba ~/rpmbuild/SPECS/openssh-10.4p1.spec
安装
# 安装所有包
sudo rpm -Uvh ~/rpmbuild/RPMS/*/openssh-*.rpm
# 或使用 dnf
sudo dnf localinstall ~/rpmbuild/RPMS/*/openssh-*.rpm
配置说明
服务端配置
- 主配置文件:
/etc/ssh/sshd_config - 扩展配置目录:
/etc/ssh/sshd_config.d/ - PAM 配置:
/etc/pam.d/sshd - 服务环境变量:
/etc/sysconfig/sshd
客户端配置
- 全局配置:
/etc/ssh/ssh_config - 扩展配置目录:
/etc/ssh/ssh_config.d/
服务管理
# 启动服务
sudo systemctl start sshd
# 设置开机自启
sudo systemctl enable sshd
# 查看状态
sudo systemctl status sshd
# 重启服务(重新加载配置)
sudo systemctl restart sshd
已启用的功能特性
| 特性 | 说明 |
|---|---|
| 可插拔认证模块支持 | |
| 安全增强型 Linux 策略 | |
| 企业级 Kerberos 认证 | |
| 系统审计日志 | |
| 智能卡/U2F 硬件密钥 | |
| 现代服务管理 | |
| 图形界面转发 | |
| 便捷密钥分发 | |
| 沙箱隔离(x86_64/aarch64) | |
| 地址空间布局随机化 | |
| 只读重定位保护 | |
| sftp 行编辑历史 |
注意事项
- FIDO/U2F 测试: 构建过程中禁用了测试套件,因为 FIDO 密钥模拟器在容器/虚拟机环境中可能存在问题。
- seccomp 沙箱: 在 riscv64、loongarch64、sw_64 架构上自动禁用 seccomp_filter 沙箱(这些架构内核支持不完整)。
- 签名文件: 不再需要 Source1 签名文件(.asc),构建过程已移除相关检查。
- 自检测试: 如需运行测试,在 spec 中取消注释
%%check部分,然后执行make tests。
版本历史
| 版本 | 日期 | 说明 |
|---|---|---|
| 10.4p1-1 | 2026-07-20 | 首次适配 openEuler 的 OpenSSH 10.4p1 打包 |
| 10.3p1-1 | 2026-06-01 | 基于 openEuler 的 OpenSSH 10.3p1 打包 |
Spec 文件审查报告
本节记录对 openssh-10.4p1.spec 的全面审查结果,包括功能验证与问题修复。
功能验证
| 功能 | 审查结论 | 验证依据 |
|---|---|---|
| X11 转发 | BuildRequires: libX11-devel gtk2-devel xauth + --with-xauth=/usr/bin/xauth + sshd_config 默认启用 X11Forwarding + gnome-ssh-askpass 构建与安装 | |
| ssh-copy-id | contrib/ssh-copy-id 安装到 %{_bindir} + 手册页安装到 man1 + %files clients 中声明 | |
| PAM 认证 | --with-pam + 自定义 /etc/pam.d/sshd 配置 | |
| SELinux | --with-selinux + libselinux-devel 构建依赖 | |
| Kerberos 5 | --with-kerberos5 + krb5-devel 构建依赖 | |
| Linux Audit | --with-audit=linux + audit-libs-devel 构建依赖 | |
| PKCS#11 | p11-kit-devel 构建依赖,configure 自动启用 | |
| Systemd | %systemd_post / %systemd_preun / %systemd_postun_with_restart + sshd.service 单元 | |
| seccomp 沙箱 | --with-sandbox=seccomp_filter(x86_64/aarch64),riscv64/loongarch64/sw_64 自动禁用 | |
| PIE 安全加固 | LDFLAGS="$LDFLAGS -pie -z relro -z now" | |
| libedit | libedit-devel 构建依赖,configure 自动检测 | |
| askpass 图形对话框 | GTK2 版 gnome-ssh-askpass 构建 + ssh-askpass 符号链接 + profile.d 脚本 |
审查发现的问题与修复
| # | 问题描述 | 严重程度 | 修复方式 |
|---|---|---|---|
| 1 | BuildRequires 中误用运行时库 audit-libs >= 1.0.8(非 devel 包,且第31行已有 audit-libs-devel >= 2.0.5) | 已删除该冗余条目 | |
| 2 | %install 中创建了 ssh_config.d 目录,但 %files clients 中未声明,rpmbuild 时会报 unpackaged files 错误 | 已在 %files clients 中添加 %dir %attr(0755,root,root) %{_sysconfdir}/ssh/ssh_config.d | |
| 3 | 缺少 --with-xauth 配置选项,可能导致 xauth 路径检测失败,影响 X11 转发 | 已添加 --with-xauth=/usr/bin/xauth | |
| 4 | openEuler 2403 构建失败:brp-digest-list 脚本因 SELinux 路径检查失败报 Path is outside buildroot | 添加 BuildRequires: systemd-rpm-macros + %undefine __brp_digest_list |
语法结构验证
| 检查项 | 结果 |
|---|---|
%if / %endif 平衡(2个条件块) | |
%package 与 %files 对应(5个子包) | |
Source 声明与 %install 引用对应(4个 Source) | |
构建脚本 build.sh shell 语法检查 | bash -n) |
转载请标明出处【OpenSSH 10.4p1 - openEuler RPM 打包项目】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
| Tags: | [阅读全文...] |
最新评论