ssh登录提示connection reset by peer,sshd提示openssl vesion mismatch

问题

new conn [x:22] failed: ssh: handshake failed: read tcp y:51514->x:22: read: connection reset by peer

ef7e348b37161335f5022720752cbf83.png

意味着:

  • sshd(OpenSSH)在编译时使用的 OpenSSL 版本号为 3.0.7 (0x30000070)
  • 系统当前运行时加载的 OpenSSL 版本号为 3.2.2 (0x30200020)
  • 即OpenSSH是在旧版 OpenSSL 上编译的,但现在链接到了新版的 OpenSSL 动态库。

env

  • rocky9.3
  • sshd/openssl

sshd(OpenSSH daemon)在编译时依赖了特定版本的 OpenSSL headers 和库文件(编译期版本),运行时却链接到了不同版本的 OpenSSL 动态库(运行期版本),这会造成 ABI 或 symbol 不匹配,openssl版本升级,openssh未升级导致的。

解决

服务器上安装42小版本,升级版本解决。
a59f160a0ab03043125e4bce93d1d929.png

核实当前openssl支持版本,不含3.0.7

ldd /usr/sbin/sshd | grep crypto
    libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f908e000000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f908de7b000)

strings /lib64/libcrypto.so.3 |grep OPENSSL_3.
OPENSSL_3.0.0
OPENSSL_3.0.1
OPENSSL_3.0.3
OPENSSL_3.0.8
OPENSSL_3.0.9
OPENSSL_3.1.0
OPENSSL_3.2.0

1.升级openssh关联程序

dnf update openssh openssh-clients openssh-server

2.重启opensshd服务及测试

systemctl restart sshd

sshd -V
...
OpenSSH_8.7p1, OpenSSL 3.2.2 4 Jun 2024