我在外部硬盘驱动器上安装了一个 git 存储库/run/media/<myusername>/<drivename>
。当我尝试将代码推送到在线 github 存储库时,git push -u origin master
出现以下错误:
/usr/bin/ssh: symbol lookup error: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b
fatal: Could not read from remote repository.
考虑到 krb5-libs 或 git 中的某些内容已损坏,我尝试推送位于我的/home/<username>
文件夹中的另一个不同的存储库,但它有效。
将存储库放在外部硬盘上有什么问题吗?我该如何修复之前的错误?
我使用的是 Fedora 32 内核 5.6.18-300.fc32.x86_64。
答案1
您在这里看到的问题是 Kerberos 5 库的版本和您使用的 OpenSSL 版本不兼容。
在大多数发行版上,OpenSSH 都是使用 Kerberos 5 支持进行编译的。在您的情况下,用于 Kerberos 加密的库与 OpenSSL 链接。
推送到主目录中的另一个存储库之所以有效,是因为 Git 不使用该ssh
命令,因此您不会看到任何问题。如果您尝试使用ssh
登录另一个系统,您会看到同样的问题。将存储库放在另一个驱动器上本质上也没有什么问题;这是一条红鲱鱼。
您应该先重新安装krb5-libs
和openssl
软件包,然后看看是否有效。如果您已安装 OpenSSL 或 Kerberos 的任何本地副本(查看/usr/local/lib
和/usr/local/lib64
),则删除它们并运行ldconfig
。
您可能还会发现运行ldd $(which ssh)
查找 OpenSSH 正在使用的任何库的位置并删除 Fedora 未提供的任何库的位置很有帮助。
答案2
即使在“正确”配置的系统上,此错误消息和类似的错误消息也可能是由系统环境的临时更改引起的。这种间歇性行为可能会导致故障排除变得混乱,但恢复或避免有问题的环境更改应该可以解决问题。
例子:
- 在 SLURM 系统上,
module load
某些软件可能会错误配置 git 环境,从而产生此错误。如果加载模块导致此错误,module del <the_module>
应该可以解决问题。 - OP的问题是由于修改环境变量引起的。 “全新”终端会话(具有原始环境配置)纠正了该问题,就像恢复受影响的环境变量一样。