簡體   English   中英

使用JSch連接到SSH后如何獲取歡迎消息

[英]How to get Welcome message after connecting to SSH using JSch

當我使用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通道“ exec”(JSch中的ChannelExec )。 但是該頻道不會給您消息。

您將必須使用“ shell”通道(JSch中的ChannelShell )。 但是該通道旨在實現交互式Shell會話。 不是自動執行命令,也不是解析命令輸出。 特別是在您提出問題的情況下,沒有切實可行的方法來找出“歡迎消息”的結尾。 您必須逐行讀取輸出,直到得到提示( "deb@ubuntu:~$" )。

或者,如果您的用例允許,則可以使用ChannelShell獲取消息,然后使用ChannelExec執行命令。


您最好與服務器管理員聯系,以使用其他API(例如,使用SSH2_MSG_USERAUTH_BANNER或什至其他方式)來提供所需的信息。 請參閱我對每個用戶的SSH MOTD的回答,以了解服務器如何提供“歡迎消息”的不同方式。 如果服務器使用SSH2_MSG_USERAUTH_BANNER ,則可以使用UserInfo.showMessage捕獲消息。 另請參閱在以Java連接到主機后如何讀取SSH密鑰-信號對標語(用於生成SSH密碼)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM