Building OpenSSH RPM Package Tutoial
安装依赖和工具
bashyum 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
生成打包目录
bashrpmdev-setuptree
下载源码
bashwget --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
拷贝源码包到相应目录
bashcp 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文件
bashtar zxf openssh-10.0p1.tar.gz
cp openssh-10.0p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
制作RPM
bashrpmbuild -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
安装
bashcd /root/rpmbuild/RPMS/x86_64/
# 开启2个TTY后
yum localinstall openssh-*.rpm
默认关闭selinux时,重启sshd
bashchmod 600 /etc/ssh/ssh_host*key && systemctl restart sshd
查看版本
ssh -V
无法登录
bashcp /etc/pam.d/sshd /etc/pam.d/sshd.bak
bashcat > /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
bashsystemctl restart sshd