[关闭]
@cdmonkey 2026-03-23T09:43:44.000000Z 字数 5566 阅读 422

OpenSSH9.9

SSH


  1. yum install -y telnet zlib zlib-devel gcc gcc-c++ make perl perl-IPC-Cmd pam pam-devel

Install OpenSSL

  1. [root@hidocker tools]# tar -zxvf openssl-3.4.1.tar.gz
  2. [root@hidocker tools]# cd openssl-3.4.1
  3. ./config --prefix=/usr/local/openssl shared zlib
  4. make
  5. make install

进行升级

  1. mv /usr/bin/openssl /usr/bin/openssl.old
  2. mv /usr/include/openssl /usr/include/openssl.old
  3. ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  4. ln -s /usr/local/openssl/include/openssl /usr/include/openssl
  5. #
  6. echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
  7. ldconfig -v

检查版本时有报错:

  1. openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory

创建两个软链:

  1. ln -s /usr/local/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
  2. ln -s /usr/local/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

再次检查版本:

  1. [root@hidocker ~]# openssl version -a
  2. OpenSSL 3.4.1 11 Feb 2025 (Library: OpenSSL 3.4.1 11 Feb 2025)
  3. built on: Tue Mar 11 05:27:39 2025 UTC
  4. platform: linux-x86_64
  5. ...

Install OpenSSH

首先进行备份。

  1. cp -a /etc/pam.d/sshd /etc/pam.d/sshd-$(date +%Y-%m-%d)
  2. cp -a /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-ac-$(date +%Y-%m-%d)
  3. cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config-$(date +%Y-%m-%d)
  4. cp -a /etc/ssh/ssh_config /etc/ssh/ssh_config-$(date +%Y-%m-%d)
  5. cp -a /usr/bin/ssh-copy-id /usr/bin/ssh-copy-id-$(date +%Y-%m-%d)

先把老版本卸载掉。

  1. rpm -e --nodeps `rpm -qa | grep openssh`

安装:

  1. [root@hidocker tools]# tar -zxvf openssh-9.9p2.tar.gz
  2. [root@hidocker tools]# cd openssh-9.9p2/
  3. ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh \
  4. --with-ssl-dir=/usr/local/openssl --with-ssl-engine \
  5. --with-pam --with-zlib --with-md5-passwords

上面的配置指令执行完后,最后将显示:

  1. PAM is enabled. You may need to install a PAM control file
  2. for sshd, otherwise password authentication may fail.
  3. Example PAM control files can be found in the contrib/
  4. subdirectory

进行编译安装:

  1. make
  2. make install

安装完成后检查版本信息:

  1. [root@hidocker ~]# /usr/local/openssh/bin/ssh -V
  2. OpenSSH_9.9p2, OpenSSL 3.4.1 11 Feb 2025

一堆软链:

  1. ln -s /usr/local/openssh/bin/scp /usr/bin/scp
  2. ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
  3. ln -s /usr/local/openssh/bin/ssh-add /usr/bin/ssh-add
  4. ln -s /usr/local/openssh/bin/ssh-agent /usr/bin/ssh-agent
  5. ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
  6. ln -s /usr/local/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
  7. ln -s /usr/local/openssh/sbin/sshd /usr/sbin/sshd

还有个服务启停脚本:

  1. [root@hidocker openssh-9.9p2]# cp -a contrib/redhat/sshd.init /etc/rc.d/init.d/sshd
  2. [root@hidocker openssh-9.9p2]# chmod u+x /etc/rc.d/init.d/sshd

最后还原配置:

/etc/ssh

  1. mv /etc/ssh/sshd_config /etc/ssh/sshd_config-9.9p2
  2. mv /etc/ssh/ssh_config /etc/ssh/ssh_config-9.9p2
  3. # 请确认要还原的配置文件
  4. cp -a /etc/ssh/sshd_config-2025-03-11 /etc/ssh/sshd_config
  5. cp -a /etc/ssh/ssh_config-2025-03-11 /etc/ssh/ssh_config

/etc/pam.d

  1. cp -a /etc/pam.d/sshd-2025-03-11 /etc/pam.d/sshd

这时就能够启动服务了:

  1. systemctl daemon-reload && systemctl start sshd && /sbin/chkconfig sshd on

openssh-rpms

https://github.com/boypt/openssh-rpms

参考内容:

https://cloud.tencent.com/developer/article/2399805

操作场景:

  1. [root@Almalinux9-63 ~]# cat /etc/redhat-release
  2. AlmaLinux release 9.7 (Moss Jungle Cat)
  3. [root@Almalinux9-63 ~]# ssh -V
  4. OpenSSH_8.7p1, OpenSSL 3.5.1 1 Jul 2025

首先是安装一些依赖包:

  1. dnf groupinstall -y "Development Tools"
  2. dnf install -y make rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel perl
  3. dnf install -y systemd-devel

把项目文件进行解压:

  1. unzip openssh-rpms-main.zip
  2. cd openssh-rpms-main

把下载的 OpenSSH、OpenSSL 源文件放置于 downloads 目录。

  1. [root@Almalinux9-63 openssh-rpms-main]# ll downloads/
  2. total 19548
  3. -rw-r--r-- 1 root root 1944499 Mar 23 15:59 openssh-9.9p2.tar.gz
  4. -rw-r--r-- 1 root root 18035615 Mar 23 15:59 openssl-3.3.6.tar.gz
  5. -rw-r--r-- 1 root root 29229 Jan 28 11:22 x11-ssh-askpass-1.2.4.1.tar.gz

而后相应的,就要修改 version.env 这个文件(三处需要修改):

  1. # custom defined components
  2. OPENSSLSRC=openssl-3.3.6.tar.gz # <-- 按实际情况配置
  3. OPENSSHSRC=openssh-9.9p2.tar.gz # <-- 按实际情况配置
  4. ASKPASSSRC=x11-ssh-askpass-1.2.4.1.tar.gz
  5. # Package release version
  6. PKGREL=1
  7. # WITH_OPENSSL:
  8. # 0: build without openssl (using openssh internal crypto)
  9. # 1: use system openssl
  10. # 2: build openssl statically
  11. # undefined: let the script decide (default)
  12. WITH_OPENSSL=2 # <-- 去掉注释
  13. ...

最后,执行 ./compile.sh 就行了。

报错:

  1. ...
  2. error: File not found: /root/openssh-rpm/openssh-rpms-main/el7/BUILDROOT/openssh-9.9p2-1.el9.x86_64/usr/libexec/openssh/sshd-auth
  3. RPM build errors:
  4. line 84: Its not recommended to have unversioned Obsoletes: Obsoletes: ssh
  5. line 114: Its not recommended to have unversioned Obsoletes: Obsoletes: ssh-clients
  6. line 119: Its not recommended to have unversioned Obsoletes: Obsoletes: ssh-server
  7. line 131: Its not recommended to have unversioned Obsoletes: Obsoletes: ssh-extras
  8. line 137: Its not recommended to have unversioned Obsoletes: Obsoletes: ssh-extras
  9. File not found: /root/openssh-rpm/openssh-rpms-main/el7/BUILDROOT/openssh-9.9p2-1.el9.x86_64/usr/libexec/openssh/sshd-auth

目前解决办法:

  1. [root@Almalinux9-63 openssh-rpms-main]# vim el7/SPECS/openssh.spec
  2. %attr(0755,root,root) %{_libexecdir}/openssh/sshd-auth # <-- 把这行注释掉

升级 OpenSSH 过程中,要确保主机指纹信息(Host Keys)不变,核心原则是:不要重新生成主机密钥文件。

OpenSSH 指纹是基于 /etc/ssh/ 目录下的主机私钥文件(像是 ssh_host_rsa_keyssh_host_ecdsa_keyssh_host_ed25519_key 等)生成。只要这些文件没有变化,无论 OpenSSH 软件版本怎样升级,客户端连接时这个指纹信息就不变!

请参见千问回答:https://www.qianwen.com/share/chat/d5e6ba94b19e4e5d9da8388464d545f4

备份配置文件:

  1. cd /etc/ssh/
  2. mkdir backup_$(date +%F)
  3. cp -a ssh* backup_2026-03-23/

经初步验证,ssh_config 将被更新,需要小心!

  1. [root@Almalinux9-63 ssh]# diff backup_2026-03-23/ssh_config ssh_config
  2. 1c1
  3. < # $OpenBSD: ssh_config,v 1.35 2020/07/17 03:43:42 dtucker Exp $
  4. ---
  5. > # $OpenBSD: ssh_config,v 1.36 2023/08/02 23:04:38 djm Exp $
  6. ...

备份 PAM 文件:

  1. cd /etc/pam.d/
  2. mkdir backup_$(date +%F)
  3. cp -a sshd backup_2026-03-23/

经初步验证,这个 sshd PAM 文件没有变化。

  1. [root@Almalinux9-63 ~]# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key
  2. 3072 SHA256:b1xvM4FYiPt0mV4oBxLcdOVDoUuOeNH+w8dkyabxlyE /etc/ssh/ssh_host_rsa_key.pub (RSA)
  3. [root@Almalinux9-63 ~]# ssh-keygen -lf /etc/ssh/backup_2026-03-23/ssh_host_rsa_key
  4. 3072 SHA256:b1xvM4FYiPt0mV4oBxLcdOVDoUuOeNH+w8dkyabxlyE /etc/ssh/backup_2026-03-23/ssh_host_rsa_key.pub (RSA)

参考内容:

https://blog.csdn.net/a33003623/article/details/144115711

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注