OpenSSH升级后 libcrypto.so.1.1: cannot open shared object file

之前分享过一篇记一次手动将OpenSSH从7.4升级到9.3的过程

这次又升级时,政务云提供了更加便捷的升级方案

给了一个升级文件:Openssl_UPDATE_to_9.2p1.bin和说明书

OpenSSH升级操作说明

1.将文件中的附件:Openssl_UPDATA_to_9.2p1.bin上传到待升级服务器
2.增加该文件的执行权限: chomd  +x Openssl_UPDATE_to_9.2p1.bin(可用tab命令自动补全文件名)
3.增加执行权限之后,运行文件:./Openssl_UPDATE_to_9.2p1.bin 
4.执行完成后,根据提示输入命令:source /etc/profile。
5.至此OpenSSH升级完成,版本为:9.2。

我高高兴兴的就去执行了~

然而

/usr/bin/cp: cannot stat ‘/usr/libexec/openssh/sftp-server’: No such file or directory
Restarting sshd (via systemctl):  Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
                                                           [FAILED]

执行 systemctl status sshd.service

Jul 20 15:04:08 bogon systemd[1]: Stopped SYSV: OpenSSH server daemon.
Jul 20 15:04:08 bogon systemd[1]: Starting SYSV: OpenSSH server daemon...
Jul 20 15:04:08 bogon sshd[97350]: /usr/bin/ssh-keygen: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
Jul 20 15:04:08 bogon sshd[97350]: /sbin/restorecon:  lstat(/etc/ssh/ssh_host_dsa_key.pub) failed:  No such file or directory
Jul 20 15:04:08 bogon sshd[97350]: Starting sshd:/usr/sbin/sshd: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
Jul 20 15:04:08 bogon sshd[97350]: [FAILED]
Jul 20 15:04:08 bogon systemd[1]: sshd.service: control process exited, code=exited status=127
Jul 20 15:04:08 bogon systemd[1]: Failed to start SYSV: OpenSSH server daemon.
Jul 20 15:04:08 bogon systemd[1]: Unit sshd.service entered failed state.
Jul 20 15:04:08 bogon systemd[1]: sshd.service failed.

问题主要出在

Starting sshd:/usr/sbin/sshd: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

政务云的同志给出了解决办法

"cp: cannot stat ‘/usr/libexec/openssh/sftp-server’: No such file or directory" 错误表示在复制时无法找到指定的文件或目录。而 "Restarting sshd (via systemctl): Job for sshd.service failed because the control process exited with error code." 错误则表示在尝试通过 systemctl 重启 sshd 服务时失败了。

这两个错误可能有关联,通常会发生在 SSH 服务器配置或文件损坏的情况下。

为了解决这个问题,您可以尝试以下步骤:

1. 检查文件路径:确保指定的文件路径 "/usr/libexec/openssh/sftp-server" 是正确的,并且文件确实存在于该位置。您可以使用以下命令来检查文件是否存在:

   ls -l /usr/libexec/openssh/sftp-server

2. 安装或重新安装 openssh 包:如果确保文件路径正确,但文件仍然不存在,可能是由于 openssh 包没有正确安装或损坏。您可以尝试重新安装 openssh 包:

   sudo apt-get install --reinstall openssh-server


3. 查看日志:执行以下命令查看详细的错误日志:

   journalctl -xe

   这将显示与 sshd 服务相关的日志,可能会提供有关错误的更多信息。

如果问题仍然存在,建议您提供更多的背景信息和完整的错误日志,这样我可以更深入地帮助您找到解决办法。

我并没有解决这个问题,我的系统是:CentOS 7.9.2009 x86_64

网上查找解决方案,最终找到了一个靠谱的方案,传送门

解决过程

下载OPENSSL

国内的话推荐使用腾讯云的镜像

如果链接失效,请去掉文件名,直接访问链接获取最新的包链接

#从官网下载
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
 
#腾讯云提供的镜像
wget https://mirrors.cloud.tencent.com/openssl/source/openssl-1.1.1g.tar.gz

我下载的时候腾讯云404了,我使用的

wget https://mirrors.cloud.tencent.com/openssl/source/openssl-1.1.1u.tar.gz

编译 openssl

注意文件路径,我实际使用的是openssl-1.1.1u

tar -xvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install

执行 make 时耗时会有点长

编译完成后,使用 openssl version 来查看版本当前版本号时,你会发现还是 1.0.2

我这里查询的时候报错了,但是不影响后续的步骤

配置

echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

再次使用 openssl version 验证版本就可以了

我到了这一步就已经可以了,如果依然不行,可以尝试下面的方式

依次执行(先备份老版本,再从新版本安装位置创建软连接)

mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib/openssl /usr/lib/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
posted @ 2023-07-20 16:08  野生程序员  阅读(351)  评论(0编辑  收藏  举报