记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

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 手册页和文档

环境要求

支持的操作系统

系统版本架构
openEuler22.03 LTSx86_64, aarch64
openEuler24.03 LTSx86_64, aarch64
openEuler24.09x86_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.1SSL/TLS 加密库
pam-devel-PAM 认证框架
libselinux-devel>= 2.3-5SELinux 安全策略
audit-libs-devel>= 2.0.5Linux 审计系统
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-5openssh
audit-libs>= 1.0.8openssh
openssh-server= %{version}-%{release}openssh
crypto-policies>= 20180306-1clients, server
pam>= 1.0.1-3server
shadow-server (pre)
systemd-server

推荐安装 (Recommends)

包名用途
p11-kitPKCS#11 智能卡中间件

快速构建

方法一:使用构建脚本(推荐)

# 以 root 身份运行 sudo bash build.sh

脚本会自动完成:

  1. 安装所有构建依赖
  2. 设置 RPM 构建环境
  3. 生成 SRPM 源码包
  4. 构建二进制 RPM 包
  5. 输出构建结果

方法二:手动构建

# 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

已启用的功能特性

特性说明
:white_check_mark: PAM 认证可插拔认证模块支持
:white_check_mark: SELinux 支持安全增强型 Linux 策略
:white_check_mark: Kerberos 5企业级 Kerberos 认证
:white_check_mark: Linux Audit系统审计日志
:white_check_mark: PKCS#11智能卡/U2F 硬件密钥
:white_check_mark: Systemd现代服务管理
:white_check_mark: X11 转发图形界面转发
:white_check_mark: ssh-copy-id便捷密钥分发
:white_check_mark: seccomp_filter沙箱隔离(x86_64/aarch64)
:white_check_mark: PIE 安全加固地址空间布局随机化
:white_check_mark: RELRO/BIND_NOW只读重定位保护
:white_check_mark: libeditsftp 行编辑历史

注意事项

  1. FIDO/U2F 测试: 构建过程中禁用了测试套件,因为 FIDO 密钥模拟器在容器/虚拟机环境中可能存在问题。
  2. seccomp 沙箱: 在 riscv64、loongarch64、sw_64 架构上自动禁用 seccomp_filter 沙箱(这些架构内核支持不完整)。
  3. 签名文件: 不再需要 Source1 签名文件(.asc),构建过程已移除相关检查。
  4. 自检测试: 如需运行测试,在 spec 中取消注释 %%check 部分,然后执行 make tests

版本历史

版本日期说明
10.4p1-12026-07-20首次适配 openEuler 的 OpenSSH 10.4p1 打包
10.3p1-12026-06-01基于 openEuler 的 OpenSSH 10.3p1 打包

Spec 文件审查报告

本节记录对 openssh-10.4p1.spec 的全面审查结果,包括功能验证与问题修复。

功能验证

功能审查结论验证依据
X11 转发:white_check_mark: 完整支持BuildRequires: libX11-devel gtk2-devel xauth + --with-xauth=/usr/bin/xauth + sshd_config 默认启用 X11Forwarding + gnome-ssh-askpass 构建与安装
ssh-copy-id:white_check_mark: 完整支持contrib/ssh-copy-id 安装到 %{_bindir} + 手册页安装到 man1 + %files clients 中声明
PAM 认证:white_check_mark: 已启用--with-pam + 自定义 /etc/pam.d/sshd 配置
SELinux:white_check_mark: 已启用--with-selinux + libselinux-devel 构建依赖
Kerberos 5:white_check_mark: 已启用--with-kerberos5 + krb5-devel 构建依赖
Linux Audit:white_check_mark: 已启用--with-audit=linux + audit-libs-devel 构建依赖
PKCS#11:white_check_mark: 自动检测p11-kit-devel 构建依赖,configure 自动启用
Systemd:white_check_mark: 完整集成%systemd_post / %systemd_preun / %systemd_postun_with_restart + sshd.service 单元
seccomp 沙箱:white_check_mark: 条件启用--with-sandbox=seccomp_filter(x86_64/aarch64),riscv64/loongarch64/sw_64 自动禁用
PIE 安全加固:white_check_mark: 已启用LDFLAGS="$LDFLAGS -pie -z relro -z now"
libedit:white_check_mark: 已启用libedit-devel 构建依赖,configure 自动检测
askpass 图形对话框:white_check_mark: 完整支持GTK2 版 gnome-ssh-askpass 构建 + ssh-askpass 符号链接 + profile.d 脚本

审查发现的问题与修复

#问题描述严重程度修复方式
1BuildRequires 中误用运行时库 audit-libs >= 1.0.8(非 devel 包,且第31行已有 audit-libs-devel >= 2.0.5:warning: 中已删除该冗余条目
2%install 中创建了 ssh_config.d 目录,但 %files clients 中未声明,rpmbuild 时会报 unpackaged files 错误:cross_mark: 高已在 %files clients 中添加 %dir %attr(0755,root,root) %{_sysconfdir}/ssh/ssh_config.d
3缺少 --with-xauth 配置选项,可能导致 xauth 路径检测失败,影响 X11 转发:warning: 中已添加 --with-xauth=/usr/bin/xauth
4openEuler 2403 构建失败:brp-digest-list 脚本因 SELinux 路径检查失败报 Path is outside buildroot:cross_mark: 高添加 BuildRequires: systemd-rpm-macros + %undefine __brp_digest_list

语法结构验证

检查项结果
%if / %endif 平衡(2个条件块):white_check_mark: 全部闭合
%package%files 对应(5个子包):white_check_mark: 全部匹配
Source 声明与 %install 引用对应(4个 Source):white_check_mark: 全部引用
构建脚本 build.sh shell 语法检查:white_check_mark: 通过 (bash -n)



转载请标明出处【OpenSSH 10.4p1 - openEuler RPM 打包项目】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论