编辑
2025-10-25
linuxbasics
00
请注意,本文编写于 47 天前,最后修改于 47 天前,其中某些信息可能已经过时。

目录

Building OpenSSH RPM Package Tutoial

安装依赖和工具

bash
yum groupinstall -y "Development Tools" yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel perl perl-IPC-Cmd openssl-devel

生成打包目录

bash
rpmdev-setuptree

下载源码

bash
wget --no-check-certificate 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 wget --no-check-certificate https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p1.tar.gz #wget --no-check-certificate https://www.openssl.org/source/openssl-3.3.1.tar.gz

拷贝源码包到相应目录

bash
cp openssh-10.0p1.tar.gz /root/rpmbuild/SOURCES #cp openssl-3.3.1.tar.gz /root/rpmbuild/SOURCES cp x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES

复制openssh.spec文件

bash
tar zxf openssh-10.0p1.tar.gz cp openssh-10.0p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/

制作RPM

bash
rpmbuild -ba --nodebuginfo ~/rpmbuild/SPECS/openssh.spec

报错:

error: Installed (but unpackaged) file(s) found: /usr/libexec/openssh/sshd-auth

RPM build errors: Installed (but unpackaged) file(s) found: /usr/libexec/openssh/sshd-auth

%attr(0755,root,root) %{_libexecdir}/openssh/sshd-auth # 添加到~/rpmbuild/SPECS/openssh.spec文件371行下面 366 %files server 367 %defattr(-,root,root) 368 %dir %attr(0111,root,root) %{_var}/empty/sshd 369 %attr(0755,root,root) %{_sbindir}/sshd 370 %attr(0755,root,root) %{_libexecdir}/openssh/sshd-session 371 %attr(0755,root,root) %{_libexecdir}/openssh/sftp-server 372 %attr(0755,root,root) %{_libexecdir}/openssh/sshd-auth 373 %attr(0644,root,root) %{_mandir}/man8/sshd.8* 374 %attr(0644,root,root) %{_mandir}/man5/moduli.5* 375 %attr(0644,root,root) %{_mandir}/man5/sshd_config.5* 376 %attr(0644,root,root) %{_mandir}/man8/sftp-server.8* 377 %attr(0755,root,root) %dir %{_sysconfdir}/ssh 378 %attr(0600,root,root) %config(noreplace) %{_sysconfdir}/ssh/sshd_config 379 %attr(0600,root,root) %config(noreplace) /etc/pam.d/sshd 380 %attr(0755,root,root) %config /etc/rc.d/init.d/sshd 381 %endif

安装

bash
cd /root/rpmbuild/RPMS/x86_64/ # 开启2个TTY后 yum localinstall openssh-*.rpm

默认关闭selinux时,重启sshd

bash
chmod 600 /etc/ssh/ssh_host*key && systemctl restart sshd

查看版本

ssh -V
openssh-10.0p2

无法登录

bash
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
bash
cat > /etc/pam.d/sshd <<EOF 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 session required pam_selinux.so close session required pam_loginuid.so 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
bash
systemctl restart sshd