【发布时间】: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