AnolisOS8.6 升级openssh版本
浏览量:102820
一、升级背景
Anolis OS release 8.6操作系统自带的openssh版本为8.0,被扫出openssh的漏洞,故升级最新版本整改漏洞。
二、升级注意事项
1.龙蜥操作系统自带了openssl 1.1.1k,所以无需安装其他版本的openssl,以免导致冲突。
2.升级前先备份openssh的配置文件目录,多打开一个会话窗口保持ssh连接,为了保险起见建议打开telnet服务,防止升级失败openssh无法启动导致远程不到服务器。
3.编译安装时如提示缺少一些文件导致安装报错,可通过yum工具进行依赖包的安装。
三、升级步骤
3.1 编译安装
#备份原始配置 $ \cp -a /etc/ssh /etc/ssh_bak $ \cp -a /etc/pam.d/sshd /etc/pam.d/sshd_bak # 下载源码 $ mkdir /test $ cd /test $ wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz $ tar xf openssh-9.7p1.tar.gz $ cd openssh-9.7p1 #卸载旧版openssh $ yum remove openssh -y #编译安装 $ yum install -y zlib-devel.x86_64 openssl-devel.x86_64 pam-devel.x86_64 gcc $ ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib=/usr/lib --with-ssl-dir=/etc/pki/tls --with-pam
$ make && make install #生成ssh服务管理脚本和自启动 $ install -m644 contrib/redhat/sshd.pam /etc/pam.d/sshd $ cp contrib/redhat/sshd.init /etc/init.d/sshdchmod a+x /etc/init.d/sshd $ chkconfig --add sshd #还原配置 $ \cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_default $ \cp -a /etc/pam.d/sshd /etc/pam.d/sshd_default $ cat /etc/ssh_bak/sshd_config >/etc/ssh/sshd_config $ cat /etc/pam.d/sshd_bak >/etc/pam.d/sshd #重启sshd $ systemctl restart sshd #查看ssh和sshd版本 $ ssh -V $ sshd -V
3.2 RPM制作并升级操作
# 安装依赖包 $ yum install -y rpm-build rpmdevtools gcc gcc-c++ perl 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 $ cd /root/rpmbuild $ rpmdev-setuptree $ tree . ├── BUILD ├── RPMS ├── SOURCES ├── SPECS └── SRPMS 5 directories, 0 files # 打开OpenSSH官网下载最新版本的Openssh 9.3p2和相关依赖包 $ cd /root/rpmbuild/SOURCES/ $ wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz $ tar -xf openssh-9.7p1.tar.gz $ 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 # 配置相关编译文件 $ cp openssh-9.7p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/ $ cd /root/rpmbuild/SPECS/ #不生产ask包(可选) $ sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" openssh.spec $ sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" openssh.spec #修改openssl-devel的报错(如未报错不用执行) $ sed -i '/openssl-devel < 1.1/s/^/#/' openssh.spec #修改PreReq的报错(如未报错不用执行) $ sed -i '/PreReq:/s/^/#/' openssh.spec # 编译文件 $ rpmbuild -ba openssh.spec # $ cd /root/rpmbuild/RPMS/x86_64 $ ll -rw-r--r-- 1 root root 627876 6月 19 09:46 openssh-9.7p1-1.an8.x86_64.rpm -rw-r--r-- 1 root root 623488 6月 19 09:46 openssh-clients-9.7p1-1.an8.x86_64.rpm -rw-r--r-- 1 root root 970000 6月 19 09:46 openssh-debuginfo-9.7p1-1.an8.x86_64.rpm -rw-r--r-- 1 root root 496012 6月 19 09:46 openssh-server-9.7p1-1.an8.x86_64.rpm # 打包所有rpm包 tar -zcvf openssh9.7p1_an8_rpm.tar.gz *.rpm #问题参考 https://www.cnblogs.com/JimmyThomas/p/16257866.html
3.3 使用RPM升级openssh操作
#备份原始配置 $ \cp -a /etc/ssh /etc/ssh_bak $ \cp -a /etc/pam.d/sshd /etc/pam.d/sshd_bak #查看当前openssh版本 # rpm -qa|grep openssh openssh-8.0p1-13.0.1.an8.x86_64 openssh-server-8.0p1-13.0.1.an8.x86_64 openssh-clients-8.0p1-13.0.1.an8.x86_64 openssh-askpass-8.0p1-13.0.1.an8.x86_64 #卸载旧版openssh $ yum remove openssh -y #执行升级 $ rpm -Uvh openssh-*rpm #还原配置 $ \cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_default $ \cp -a /etc/pam.d/sshd /etc/pam.d/sshd_default $ cat /etc/ssh_bak/sshd_config >/etc/ssh/sshd_config $ cat /etc/pam.d/sshd_bak >/etc/pam.d/sshd #修改权限并重启sshd $ chmod 600 /etc/ssh/ssh_host_rsa_key $ chmod 600 /etc/ssh/ssh_host_ecdsa_key $ chmod 600 /etc/ssh/ssh_host_ed25519_key $ systemctl restart sshd
注意:从8.8开始默认禁用使用SHA-1哈希算法的RSA签名,从9.5以后ssh-keygen 默认使用Ed25519加密算法,dsa从openssh 9.0就不再使用,rsa从openssh 9.3开始就不再使用。详情请阅读:OpenSSH: Release Notes
3.4 正确创建key的方式
$ ssh-keygen -t ed25519
3.5 使用源码升级后未找到ssh-copy-id命令
rpm升级openssh之后,高版本的openssh-clinet已经没有ssh-copy-id命令,对于用此命令做免密登陆,不是很方便。
如果使用openssh源码的话,解压之后,会在openssh-9.7p1/contrib下生产ssh-copy-id文件
$ chmod +x ssh-copy-id && mv ssh-copy-id /usr/bin

神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。