环境介绍
- 操作系统版本:openEuler-22.03-LTS-SP1
- 需要升级到的openssh版本:openssh-9.2p1
升级思路
- 下载源码包,在虚拟机中制作rpm包。
- 将制作好的rpm包,放到其他机器中去使用。
这样做的好处是:所处环境中有很多主机时能够快速完成升级。
制作rpm包
搭建本地yum源
制作本地yum源,方便后续安装相关依赖包。
- 挂载系统镜像
- 创建本地yum源
1 #创建挂载路径
2 mkdir /iso
3 #挂载镜像
4 mount /dev/cdrom /iso/
5 #查看是否挂载成功
6 [root@localhost ~]# ls /iso
7 docs EFI images isolinux ks Packages repodata RPM-GPG-KEY-openEuler TRANS.TBL
8 #创建yum文件
9 cat >> /etc/yum.repos.d/local.repo << EOF
10 [local]
11 name=local
12 baseurl = file:///iso
13 enable=1
14 gpgcheck=0
15 EOF
16 #检查yum是否配置成功
17 [root@localhost ~]# yum repolist
18 [root@localhost ~]# yum repolist
19 repo id repo name
20 local local
制作RPM
- 安装依赖包
yum install -y rpm-build gcc gcc-c++ glibc glibc-devel openssl-devel openssl pcre-devel zlib zlib-devel make wget krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts libXt-devel imake gtk2-devel lrzsz
- 创建rpm制作的相关目录
mkdir -pv /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
- 下载openssh9.2p1和x11-ssh-askpass-1.2.4.1.tar.gz
1 #将下载的文件放入SOURCES文件夹下
2 cd /root/rpmbuild/SOURCES/
3 #下载openssh9.2p1
4 wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.2p1.tar.gz
5 #下载x11-ssh-askpass-1.2.4.1.tar.gz
6 wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz
- 重新制作openssh压缩包
因为下载的包缺一个sshd.pam.old,需要将现在系统的/etc/pam.d/sshd,拷到编译的目录中。如果没有改文件,后续编译会报错。
1 tar -xvzf openssh-9.2p1.tar.gz
2 cd /root/rpmbuild/SOURCES/openssh-9.2p1
3 cp /etc/pam.d/sshd /root/rpmbuild/SOURCES/openssh-9.2p1/contrib/redhat/sshd.pam.old
4 #回到SOURCE目录,重新tar包
5 cd ..
6 tar -zcpf openssh-9.2p1.tar.gz openssh-9.2p1
- 修改openssh.spec配置
1 #将openssh.spec配置文件拷贝到,编译目录下
2 cp /root/rpmbuild/SOURCES/openssh-9.2p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
3 cd /root/rpmbuild/SPECS
4
5 #修改openssh.spec配置
6 #1.不生成askpass包
7 cat /root/rpmbuild/SPECS/openssh.spec | grep no_gnome_askpass
8 cat /root/rpmbuild/SPECS/openssh.spec | grep no_x11_askpass
9
10 sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" openssh.spec
11 sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" openssh.spec
12
13 #2.解决openssl-devel < 1.1报错
14 cat /root/rpmbuild/SPECS/openssh.spec | grep openssl-devel
15 sed -i '/openssl-devel < 1.1/s/^/#/' openssh.spec
16
17 #3.解决PreReq报错
18 cat /root/rpmbuild/SPECS/openssh.spec | grep PreReq
19 sed -i '/PreReq/s/^/#/' openssh.spec
20
21 #4.解决Obsoletes报错
22 cat /root/rpmbuild/SPECS/openssh.spec | grep Obsoletes
23 sed -i '/Obsoletes:/s/^/#/' openssh.spec
- 编译源码包,制作成rpm包
cd /root/rpmbuild/SPECS/
rpmbuild -ba openssh.spec
#编译完成后的软件在,debug的包不用下载安装
ls /root/rpmbuild/RPMS/x86_64/
升级openssh
下载制作好的rpm后,上传到其他主机升级openssh。
yum localinstall openssh-9.2p1-1.x86_64.rpm openssh-server-9.2p1-1.x86_64.rpm openssh-clients-9.2p1-1.x86_64.rpm -y
检查sshd的配置文件是否正常。
[root@localhost x86_64]# sshd -t
/etc/ssh/sshd_config line 142: Deprecated option RSAAuthentication
/etc/ssh/sshd_config line 144: Deprecated option RhostsRSAAuthentication
/etc/ssh/sshd_config: line 159: Bad configuration option: GSSAPIKexAlgorithms
/etc/ssh/sshd_config: terminating, 1 bad configuration options
报错159有问题,将/etc/ssh/sshd_config第159行配置注释掉。重启sshd服务。
[root@localhost x86_64]# cat -n /etc/ssh/sshd_config
159 #GSSAPIKexAlgorithms gss-group14-sha256-,gss-group16-sha512-,gss-curve25519-sha256-
systemctl restart sshd
测试ssh测试登陆是否正常。