使用Java在SSH上运行命令

Scenerio:我想通过ssh从Java程序在远程机器上运行命令(我在开发机器上使用OpenSSH)。我也想通过传递密码来建立ssh连接,而不是像使用“期望”那样设置密钥。

问题:尝试执行“期望”之类的密码登录时,使用ProcessBuilder创建的流程似乎看不到密码提示。当运行常规的非ssh命令(例如’ls’)时,我可以获取流并与它们进行交互。我将标准错误和标准输出合并为一个流redirectErrorStream(true);因此我不会在标准错误中丢失它…当我使用’-v’选项运行ssh时,我看到了流中的所有日志记录,但没有看到提示。这是我第一次尝试将ProcessBuilder用于此类操作。我知道使用Python,Perl或良好的期望会更容易,但是我的老板想利用我们试图在现有Java程序中找回的东西(远程日志文件和运行脚本),所以我有些困惑。

在此先感谢您的帮助!

回答:

该提示仅在ssh连接到TTY 时才显示,而在Java中则不显示。

可能有一种方法可以在ssh应用程序的命令行中提供密码。那将是克服提示的方法。

或者,考虑从本机Java代码直接连接到主机服务器,而不是运行外部应用程序。有上百万个库可以做到这一点。

以上是 使用Java在SSH上运行命令 的全部内容, 来源链接: utcz.com/qa/398768.html

回到顶部