【问题标题】: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 referencessh:重定位错误:ssh:符号 EVP_enc_null,版本 OPENSSL_1.0.0 未在带有链接时间参考的文件 libcrypto.so.1.0.0 中定义
【发布时间】: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 版本是什么?

标签: java linux tomcat ssh openssl


【解决方案1】:

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

export LD_LIBRARY_PATH=""

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

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 2022-11-09
    • 2018-03-10
    • 2020-02-25
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多