ssh:重定位错误:ssh:符号 EVP_enc_null,版本 OPENSSL_1.0.0 未在带有链接时间参考的文件 libcrypto.so.1.0.0 中定义

Posted

技术标签:

【中文标题】ssh:重定位错误:ssh:符号 EVP_enc_null,版本 OPENSSL_1.0.0 未在带有链接时间参考的文件 libcrypto.so.1.0.0 中定义【英文标题】:ssh: relocation error: ssh: symbol EVP_enc_null, version OPENSSL_1.0.0 not defined in file libcrypto.so.1.0.0 with link time reference 【发布时间】:2017-07-13 19:57:54 【问题描述】:

我编写了一个 bash 脚本,它使用 SCP 将文件复制到同一 LAN 上的另一台服务器。

例如。 scp /opt/alfresco_associated/tomcat/temp/Alfresco/_source_4939853286195544661.tiff ocruser@10.16.0.6:/opt/ocr/data/temp/eng_119045725.tiff

如果我直接使用终端执行此脚本,它可以正常工作。如果我从运行在 Apache Tomcat 上的 Java 类调用它,我会收到以下错误消息:

/usr/bin/ssh:重定位错误:/usr/bin/ssh:符号 EVP_enc_null,版本 OPENSSL_1.0.0 未在文件 libcrypto.so.1.0.0 中定义,并带有链接时间参考 失去联系

源机器和目标机器都运行 Ubuntu 16.04 LTS 服务器。

我尝试过: 适当的更新 适当升级

服务器版本:Apache Tomcat/7.0.59 服务器建成:2015 年 1 月 28 日 15:51:10 UTC 服务器号:7.0.59.0 操作系统名称:Linux 操作系统版本:4.4.0-64-generic 架构:amd64 JVM版本:1.8.0_65-b17 JVM供应商:甲骨文公司

OpenSSL 1.0.2g 2016 年 3 月 1 日

【问题讨论】:

这可能是环境变量的问题。它们包含动态链接器将搜索共享库的路径(例如`libcrypto.so.1.0.0)。确保您的 Java 调用设置与 bash 会话相同的环境变量。发出命令的 Java 代码的摘录会很有帮助。 谢谢。所以看起来 Tomcat 正在使用自己的一组库,包括 libssl.so.1.0.0。这似乎与系统上安装的 OpenSSL 1.0.2g 不同。我注释掉了tomcat的“setenv.sh”中包含自定义库的行,并重新启动了tomcat。错误仍然存​​在。有没有办法在运行时检查 Tomcat 加载的 OpenSSL 版本是什么? 【参考方案1】:

我已通过在我的 Bash 脚本顶部添加以下行来解决此问题:

export LD_LIBRARY_PATH=""

这会重置 Tomcat 设置为指向自定义库的环境变量。对于脚本的会话,调用默认库。

【讨论】:

以上是关于ssh:重定位错误:ssh:符号 EVP_enc_null,版本 OPENSSL_1.0.0 未在带有链接时间参考的文件 libcrypto.so.1.0.0 中定义的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb_(SSH)使用Servlet实现用户的登陆

在 ssh 之后从命令行重命名控制台会话

ssh无法启动

内联程序集返回:在创建共享对象时,不能使用针对未定义符号的重定位R_X86_64_32S [重复]

重定位 R_X86_64_PC32 对符号 _ZTISt13runtime_error@@GLIBCXX_3.4 在制作共享对象时不能使用;使用 -fPIC 重新编译

20170317_ssh日志处理