之前分享过一篇记一次手动将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