一。下载资源
1.在这个网站:https://src.fedoraproject.org/repo/pkgs/openssh/下载
x11-ssh-askpass-1.2.4.1.tar.gz
openssh-8.4p1.tar.gz
2.安装依赖及rpm-build工具
yum install rpm-build gcc gcc-c++ glibc glibc-devel openssl-devel openssl prce pcre-devel zlib zlib-devel make wget krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts libXt-devel imake gtk2-devel
二。创建rpm工作目录
cd ~
mkdir -p rpmbuild/{SOURCES,SPECS}
三。加放源码和修改openssh.spec文件
1.把下载下来的openssh-8.4p1.tar.gz,x11-ssh-askpass-1.2.4.1.tar.gz放到/root/rpmbuild/SOURCES,然后解压 openssh-8.4p1.tar.gz,并把openssh.spec拷贝到SPECS文件夹下
cd ~/rpmbuild/SOURCES/
tar xf openssh-8.4p1.tar.gz
cp openssh-8.4p1/contrib/redhat/openssh.spec ../SPECS/
2.修改openssh.spec
12,15行修改成如下,把0改成1。就不会生成这两个rpm包。否则会多出这两个包。
注释掉103行,否则安装openssl-devel的版本在这个范围,没在这个范围报错。
在89行加Source2:sshd,并把本机的/etc/pam.d/sshd文件放到/root/rpmbuild/SOURCES/openssh-8.4p1/contrib/redhat/sshd.pam。源码包里的没有相关SELinux关闭的配置等,用源码包的/etc/pam.d/sshd文件,还得关闭SElinux等。
cp /etc/pam.d/sshd /root/rpmbuild/SOURCES/etc/pam.d/sshd
修改280行,把“install -m644 $RPM_SOURCE_DIR/sshd $RPM_BUILD_ROOT/etc/pam.d/sshd”替换原配置文件中的"iinstall -m644 $RPM_SOURCE_DIR/etc/pam.d/sshd $RPM_BUILD_ROOT/etc/pam.d/sshd”
rpm包更新前备份ssh配置,在340行添加cp -r /etc/ssh /etc/ssh_bak。
rpm包更新后,执行以下操作,在343行修改添加如下。
chmod 600 /etc/ssh/ssh_host_*_key//只读,对一些钥匙。否则启动sshd报错
sed -i -e "s/#PasswordAuthentication yes/PasswordAuthentication yes/g" /etc/ssh/sshd_config//密码验证
sed -i -e "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config//root用户登录
sed -i -e "s/#PermitEmptyPasswords no/PermitEmptyPasswords no/g" /etc/ssh/sshd_config
sed -i -e "s/#UsePAM no/UsePAM yes/g" /etc/ssh/sshd_config
sed -i -e "s/#X11Forwarding no/X11Forwarding yes/g" /etc/ssh/sshd_config
chmod +x /etc/init.d/sshd
/sbin/chkconfig --add sshd
/sbin/chkconfig sshd on
四。执行制作rpm包
执行以下命令,会开始制作rpm包。
rpmbuild -bb openssh.spec
制作完成后在/root/rpmbuild/RPMS/x86_64目录下会生成四个rpm包。忽略掉debuginfo包。
五。在服务器上升级rpm包
把生成的rpm包放到要升级的服务器上,执行rpm -Uvh openssh-*.rpm。