安装openssl
需要提前安装好openssl,在编译过程使用配置路径,就可以处理编译后openssl version和ssh -V显示得版本不一致问题。
如下用到安装包
openssl-1.1.1k-1.el7.x86_64.rpm
openssl-devel-1.1.1k-1.el7.x86_64.rpm
执行安装
rpm -e `rpm -qa | grep openssl | grep -v libs` --nodeps
rpm -Uvh openssl* --nodeps
cp /etc/ld.so.conf /etc/ld.so.conf.bak
#sed -i '/openssl/d' /etc/ld.so.conf
echo "/usr/local/openssl/lib">> /etc/ld.so.conf
ldconfig
openssl version
安装openssl后,可查看到新增得/usr/local/openssl目录,在编译过程修改openssh.spec配置。
编译rpm包
源码包下载,建议复制url到浏览器,打开下载。
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
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz
准备编译环境
yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts
准备rpmbuild环境
mkdir -p /root/rpmbuild/SOURCES
mkdir -p /root/rpmbuild/SPECS
cp /root/openssh-9.0p1.tar.gz /root/rpmbuild/SOURCES/
cp /root/x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES/
tar -zxf openssh-9.0p1.tar.gz -C /opt
cp /opt/openssh-9.0p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
chown sshd:sshd /root/rpmbuild/SPECS/openssh.spec c
修改/root/rpmbuild/SPECS/openssh.spec配置文件
注意如果增加openssl路径,会识别到新版本得openssl,在安装过程也会优先安装openssl1.1.1后,才能正常启动openssh,可以处理openssl version和ssh -V显示得版本不一致问题。
sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e "s/^BuildRequires: openssl-devel < 1.1/#BuildRequires: openssl-devel < 1.1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e '/with-privsep-path/a\ --with-openssl-includes=/usr/local/openssl/include \\\n --with-ssl-dir=/usr/local/openssl \\' /root/rpmbuild/SPECS/openssh.spec
在/root/rpmbuild/SPECS/目录中执行命令
rpmbuild -ba openssh.spec
rpm则生成在/root/rpmbuild/RPMS/x86_64目录中
ll /root/rpmbuild/RPMS/x86_64
openssh9.0的rpm安装
开启telnet
telnet主要防止ssh操作失误导致服务无法登陆问题,telnet为明文登陆,确保ssh正常后,这里用已经准备好的telnet安装包操作
tar -xzvf telnet_rpm.tar.gz
cd telnet_rpm
rpm -ivh *.rpm
cat telnet_install.txt > /etc/xinetd.d/telnet
systemctl start telnet.socket
systemctl start xinetd.service
安装过程要谨慎,要先备份原文件以及安装telnet,然后开启telnet并验证能否明文登陆,再着手更新openssh8.5版本
备份文件
mkdir ssh_backfile
cp -rf /etc/ssh ssh_backfile/
cp -rf /etc/pam.d/sshd ssh_backfile/
备份sshd.service启动文件,因为如果有执行yum remove就会出现删除启动文件,可以不备份,不过为了以防万一,多操作无所谓,有的启动文件目录不一定相同。
mkdir ssh_service
cp -rf /usr/lib/systemd/system/sshd* ssh_service/
升级openssh
systemctl stop sshd
rpm -Uvh rpm-openssh/openssh* --nodeps
恢复备份文件
cp -rf ssh_backfile/ssh/* /etc/ssh/
chmod -R 600 /etc/ssh/*
cp -rf ssh_backfile/sshd /etc/pam.d/sshd
systemctl restart sshd
至此更新openssh9.0已完成
建议自给自足,以下是本人制作好的rpm包:
https://download.csdn.net/download/weixin_43723044/85188277