openssh RPM包制作

本文档介绍了如何手动创建openssh的RPM包,包括依赖安装、源码下载、解压编译、配置修改、打包编译以及可能出现的问题与解决方法,旨在简化openssh的更新和维护过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

openssh经常出现漏洞要补丁,然而一台的编译安装又太麻烦,如果能有rpm包进行升级安装就很轻松了。下面是参加一些前辈的经验制作rpm包的过程,请大家指正!

1.#依赖安装
yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts

2.#目录创建
mkdir -p /usr/src/redhat/{SOURCES,SPECS}
cd /usr/src/redhat/SOURCES/
3.#安装文件下载
wget https://mirrors.evowise.com/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz
wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz --no-check-cartificate

4.#解压编译文件,或者直接自己写
cd /usr/src/redhat/SOURCES/
# 也可以解压出整包 从里面提取出

### 创建和升级OpenSSH RPM的过程 #### 环境准备 在开始之前,需要确保有一个标准的Rocky Linux 8.6或更高版本的虚拟机环境,并具备外网访问权限。默认情况下,该系统的OpenSSH版本较低(例如8.0p1),因此需要手动构建新的RPM。 --- #### 编译环境搭建 为了成功编译OpenSSH源码并生成RPM,需安装必要的开发工具和库: ```bash dnf install -y wget make gcc perl rpm-build gtk2-devel krb5-devel \ libXt-devel openssl-devel pam-devel zlib-devel ``` 此外,还需要额外的基础工具支持,例如`imake`,可以通过以下方式获取并安装: ```bash wget http://www.rpmfind.net/linux/centos/8-stream/PowerTools/x86_64/os/Packages/imake-1.0.7-11.el8.x86_64.rpm dnf localinstall imake-1.0.7-11.el8.x86_64.rpm -y ``` 以上步骤用于设置完整的编译环境[^1]。 --- #### 下载OpenSSH源码 从官方网站或其他可信资源下载目标版本的OpenSSH源码压缩。例如,要升级到9.4p1版本,可以执行如下操作: ```bash cd /usr/src wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz tar zxvf openssh-9.4p1.tar.gz cd openssh-9.4p1 ``` --- #### 使用rpmbuild构建RPM 通过`rpmbuild`工具来创建自定义的OpenSSH RPM。以下是具体流程: 1. **初始化RPMBUILD目录结构** ```bash mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros ``` 2. **复制源码至SOURCES目录** 将解压后的OpenSSH源码移动到指定位置: ```bash cp ../openssh-9.4p1.tar.gz ~/rpmbuild/SOURCES/ ``` 3. **编写SPEC文件** 在`~/rpmbuild/SPECS/`下新建一个名为`openssh.spec`的文件,内容大致如下: ```spec Name: openssh Version: 9.4p1 Release: 1%{?dist} Summary: Secure Shell (SSH) client and server programs. License: BSD URL: https://www.openssh.com/ Source0: %{name}-%{version}.tar.gz BuildRequires: gcc make perl rpm-build gtk2-devel krb5-devel libXt-devel openssl-devel pam-devel zlib-devel %description OpenSSH is a free version of SSH. %prep %autosetup %build ./configure --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --without-hardening make %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install %files %defattr(-,root,root,-) /usr/bin/* /usr/sbin/* /etc/ssh/* %changelog * Mon Oct 10 2023 YourName <your.email@example.com> - 9.4p1-1 - Initial build. ``` 4. **构建RPM** 运行以下命令完成RPM的构建过程: ```bash rpmbuild -ba ~/rpmbuild/SPECS/openssh.spec ``` 最终生成的RPM会位于`~/rpmbuild/RPMS/x86_64/`路径下[^5]。 --- #### 安装与验证新版本 1. **卸载旧版OpenSSH** 避免冲突,建议先移除现有版本: ```bash yum erase -y openssh openssh-clients openssh-server ``` 2. **安装新版RPM** 执行以下命令安装刚刚构建好的RPM: ```bash rpm -ivh ~/rpmbuild/RPMS/x86_64/openssh-*.rpm ``` 3. **调整权限** 新建密钥文件后,应适当降低其权限以满足安全需求: ```bash chmod 600 /etc/ssh/ssh_host* ``` 4. **重启服务** 更新完成后重新加载SSH服务: ```bash systemctl restart sshd ``` 5. **确认版本号** 检查当前运行的OpenSSH版本是否已更新: ```bash ssh -V ``` 如果遇到任何错误提示,可尝试使用调试模式定位问题: ```bash sshd -t ``` --- #### 可能的问题排查 - 若升级后无法正常连接服务器,通常是因为SELinux策略未同步更新或者防火墙规则被更改[^2]。 - 权限过高可能导致SSH服务拒绝启动;务必按照前述方法修正相关文件权限[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值