【问题标题】:How to get Welcome message after connecting to SSH using JSch使用 JSch 连接到 SSH 后如何获得欢迎消息
【发布时间】:2019-01-06 01:25:23
【问题描述】:

当我使用 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 系统获取欢迎消息。请帮助了解如何获取它。

【问题讨论】:

  • 那是什么欢迎信息?有很多方法可以实现欢迎消息。见serverfault.com/a/653403/168875
  • 嗨 Martin,一旦您使用 Putty 登录到 unix 框,您会收到一些初始消息,例如版本、欢迎消息等。我想在执行任何命令之前使用 JSch 库获取这些消息。
  • 我们知道。你已经在你的问题中说过了。这不是我要求的。
  • 你是在认证之前还是之后收到消息?
  • 我想在认证前后得到消息,这是要求。

标签: java ssh jsch


【解决方案1】:

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

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

我一般要自动执行命令,您正确地计划使用 SSH 通道“exec”(JSch 中的ChannelExec)。但是那个频道不会给你信息。

您必须使用“shell”通道(JSch 中的ChannelShell)。但该通道旨在实现交互式 shell 会话。不自动执行命令,也不用于解析命令输出。特别是在您的问题的背景下,没有切实可行的方法可以找出“欢迎信息”的结尾。您必须逐行阅读输出,直到收到提示 ("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?

【讨论】:

  • 嗯,我期待这个。所以没有办法抓住这个。顺便说一句,我不能告诉管理员提供。腻子提供了一种抓取方式。此外,并不总是只需要连接到 Unix 机器,我可能必须连接到交换机(Cisco、Dell、Brocade 等)。
  • Martin,你想推荐任何其他库来满足我的要求吗?
  • 这与图书馆无关。这就是 SSH 的工作原理。但是您可以使用ChannelShell 获取消息,然后使用ChannelExec 执行命令。
猜你喜欢
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2021-12-24
  • 2021-10-09
  • 2021-09-18
  • 2021-10-12
  • 2021-01-25
  • 2021-04-11
相关资源
最近更新 更多