记录因升级OpenSSL导致SSH无法启动问题

本文分享了在升级OpenSSL到1.1.1版本后,导致SSH服务无法启动的问题及解决方案。通过替换/lib/x86_64-linux-gnu目录下的特定版本库文件,成功恢复了SSH服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因需要使用OpenSSL加密库进行开发,但是选择了高版本1.1.1,而linux环境中OpenSSL版本为1.0.2g,

所以想着干脆升级下,所以下载OpenSSL 1.1.1源码进行编译,然后安装。

照着网上的教程搞了下,很容易就实现了,终端中识别OpenSSL版本,如下:

OpenSSL version -a

参考的博客是《Ubuntu16.04安装/升级openssl到1.1版本》

但是,过了几天发现SSH不能用了,查询ssh状态,也是启动失败。想起来动过OpenSSL,所以开始想办法恢复。

百度了很久,遇到以下问题:

  • error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory
  • libcrypto.so.1.0.0: no version information available
  • sshd:OpenSSL version mismatch. Built against 10000003, you have 100020cf
  • error ssh symbol evp_aes_128_ctr

第一个好解决,路径问题,找不到so。
第二个问题,网上说需要手动写个文件,貌似是版本信息文件,我照做了,确实解决了。但是留下了疑问,为什么自己源码编译的so,SSH就老是报缺少版本信息呢???不得而知。
后面2个问题,已经记不起怎么纠结了。反正我放弃了。

OpenSSL和SSH之间也是有版本对应关系的。只能选择要么升级SSH,要么降级OpenSSL为原来的1.0.2g。我觉得还是降级OpenSSL来的更容易些。

解决办法:
其实SSH不工作的根本原因还是我照着那个博客,用高版本so替换了/lib/x86_64-linux-gnu目录下的libssl.so.xx和libcrypto.so.xx。

我在电脑虚拟机上安装了与SSH出问题环境相同版本的linux系统,然后从虚拟机中/lib/x86_64-linux-gnu目录下拷贝了以前低版本OpenSSL的libssl.so.xx和libcrypto.so.xx库,替换到问题linux环境中去。

其他什么都没改,就只替换了2个so。终端中输入ssh -V。

SSH就已经可以查到版本了,说明基本正常,然后重新启动下服务,就恢复正常了。

切记!!!不要乱替换系统库。

重要的事说三遍,别轻易替换/lib/x86_64-linux-gnu下so
重要的事说三遍,别轻易替换/lib/x86_64-linux-gnu下so
重要的事说三遍,别轻易替换/lib/x86_64-linux-gnu下so



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

### 升级 OpenSSH 到版本 9.6 的指南 为了将 OpenSSH 版本升级至 9.6,可以按照以下方法操作。需要注意的是,在执行任何系统级别的更改之前,建议备份重要数据并测试新版本的功能以确保兼容性。 #### 准备工作 在开始安装前,确认当前系统的依赖项已更新,并具备编译所需的开发工具链。通常情况下,这可以通过包管理器完成。例如,在基于 Debian 或 Ubuntu 的系统上运行以下命令来安装必要的软件: ```bash sudo apt update && sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev git-core wget curl ``` 对于 Red Hat 系列(如 CentOS 和 Fedora),则可使用 `yum` 或 `dnf` 安装这些工具: ```bash sudo yum groupinstall "Development Tools" sudo yum install openssl-devel zlib-devel bzip2-devel readline-devel wget curl ``` #### 下载源码 访问官方 OpenSSH Git 存储库或者下载页面获取最新稳定版的压缩文件。以下是通过wget直接拉取指定版本的方式之一: ```bash wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz tar -xf openssh-9.6p1.tar.gz cd openssh-9.6p1/ ``` #### 配置与构建 进入解压后的目录后,利用 configure 脚本来检测环境设置以及定义安装路径等参数。默认会把二进制文件放置于 `/usr/local/bin` 中。 ```bash ./configure --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-md5-passwords \ --with-pam \ --without-jail ``` 上述选项解释如下: - `--prefix`: 设置最终程序及其资源所在位置; - `--sysconfdir`: SSH配置文件存储的位置; - `--with-md5-passwords`, `--with-pam`: 启用特定身份验证机制支持; - `--without-jail`: 不启用沙盒模式。 接着就是实际编译过程: ```makefile make ``` 如果一切顺利,则继续进行最后一步——替换现有服务端组件: ```bash sudo make install ``` #### 更新配置和服务重启 重新启动 sshd 进程使改动生效。在此之前,请仔细检查新的配置文件是否正确无误,因为语法错误可能导致无法连接服务器的风险增加。 ```bash sudo systemctl restart sshd ``` 另外,也可以手动停止旧实例再开启新进程作为替代方案: ```bash sudo pkill sshd; /usr/sbin/sshd ``` #### 测试连接 尝试从另一台机器建立一个新的 SSH 会话,观察是否有异常提示信息出现。同时查看日志记录进一步判断状态正常与否。 ```bash ssh user@yourserveripaddress tail -n 50 /var/log/auth.log ``` 以上即为完整的升级流程概述[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值