Ubuntu 20.04容器OpenSSL版本不匹配问题求助
解决OpenSSL版本不匹配导致的git克隆及openssh重装错误
问题根源
你的系统里存在两个版本的libcrypto.so.1.1:
- 系统默认库是满足
OPENSSL_1_1_1要求的OpenSSL 1.1.1系列(对应版本码1010106f) /software/bin/下的旧版本库是OpenSSL 1.1.0系列(对应版本码1010007f),且该路径的库被系统优先加载,导致依赖OPENSSL_1_1_1的程序(如libssh.so.4、openssh密钥生成工具)出现版本兼容错误。
解决方案
1. 确认库加载优先级
先验证问题确实由路径优先级导致:
ldd /usr/lib/git-core/git-remote-http | grep libcrypto
如果输出显示libcrypto.so.1.1 => /software/bin/libcrypto.so.1.1,说明旧库被优先加载。
2. 临时调整库加载顺序(立即生效)
执行命令让系统默认OpenSSL库优先加载:
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
之后重新尝试:
- 克隆目标项目
- 重装openssh:
apt-get install --reinstall openssh-server openssh-client
3. 永久生效配置(可选)
如果临时调整有效,将配置写入环境变量:
- 当前用户:编辑
~/.bashrc,添加以下内容后执行source ~/.bashrc生效:export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH - 全局用户:编辑
/etc/profile,添加上述命令后,重启系统或执行source /etc/profile生效。
4. 备选方案(若/software/bin下的库非必需)
如果确认该路径下的旧库不是系统必需组件,可直接备份移除:
mv /software/bin/libcrypto.so.1.1 /software/bin/libcrypto.so.1.1.bak ldconfig
之后重新测试克隆和openssh重装操作。
验证
调整完成后执行以下命令确认:
openssl version # 应显示OpenSSL 1.1.1n 15 Mar 2022 ldd /usr/lib/git-core/git-remote-http | grep libcrypto # 应指向/lib/x86_64-linux-gnu/libcrypto.so.1.1
内容的提问来源于stack exchange,提问作者user2090491
相关产品推荐
相关产品推荐

