gpt4 book ai didi

java - 如何使用 JSch 连接到 SSH 后收到欢迎消息

转载 作者:行者123 更新时间:2023-11-30 01:57:02 24 4
gpt4 key购买 nike

当我使用 PuTTY 连接到 SSH 时,我收到如下消息。

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-98-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
deb@ubuntu:~$

同样,当我使用 JSch 库进行连接时,我也应该在 Java 中收到相同的消息。请帮助我了解如何获得这个。我在下面提供了我的代码详细信息。

public String connect() {
String errorMessage = null;
try {
sesConnection = jschSSHChannel.getSession(userName, ipOrHostName, PORT);
sesConnection.setPassword(password);
sesConnection.setConfig("StrictHostKeyChecking", "no");
sesConnection.connect(TIMEOUT);

//After connecting, I should get the welcome message

} catch (JSchException jschX) {
errorMessage = jschX.getMessage();
}
return errorMessage;
}

我想在执行 JSch 中的命令之前从 unix 系统获取欢迎消息。请帮助了解如何获取它。

最佳答案

您看到的消息只是打印在 shell 输出上。

这不适合自动读取和执行命令。

我一般要自动执行命令,您正确地计划使用 SSH channel “exec”(JSch 中的 ChannelExec)。但该 channel 不会向您提供该消息。

您必须使用“shell” channel (JSch 中的 ChannelShell)。但该 channel 旨在实现交互式 shell session 。不自动执行命令,也不解析命令输出。特别是在您的问题的背景下,没有可靠的方法可以找出“欢迎消息”的结尾。您必须逐行读取输出,直到出现提示(“deb@ubuntu:~$”)。

或者,如果您的用例允许,您可以使用 ChannelShell 获取消息,然后使用 ChannelExec 执行命令。

<小时/>

您最好与服务器管理员联系,以使用不同的 API(例如使用SSH2_MSG_USERAUTH_BANNER,甚至其他方式)提供所需的信息。请参阅我对 SSH MOTD per user 的回答了解服务器如何提供“欢迎消息”的不同方式。如果服务器使用SSH2_MSG_USERAUTH_BANNER,您可以使用 UserInfo.showMessage捕获消息。另请参阅How to read the SSH key-sig pair banner (for generating SSH password) after connecting to host in Java?

关于java - 如何使用 JSch 连接到 SSH 后收到欢迎消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54050436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com