UserInfo передает yes, чтобы активировать - PullRequest
7 голосов
/ 06 апреля 2011

Я использую инструменты ssh, чтобы установить ssh-соединение со школьным сервером, пример, который я использую из источника, который устанавливает ssh-соединение.Моя проблема в том, что я не хочу, чтобы пользователь вводил какие-либо приглашения, однако появляется сообщение о том, что аутентификация хоста не может быть установлена, и пользователю нужно нажать «да», чтобы продолжить, как я могу кодировать его, чтобы программа приняла приглашение,сам.

Session session = jsch.getSession(user, host, 22);
//username and host I can input directly into program so thats not a problem
// username and password will be given via UserInfo interface.
UserInfo ui = new MyUserInfo();

//this is the part that uses the UserInfo, which pulls up a prompt
//how can I code the prompt to automatically choose yes?    
session.setUserInfo(ui);
session.setPassword("password");
session.connect();
String command = JOptionPane.showInputDialog("Enter command", "set|grep SSH");

1 Ответ

5 голосов
/ 06 апреля 2011

Мы используем код ниже:

try {
    session = jsch.getSession(user, host, port);
}
catch (JSchException e) {
    throw new TransferException("Failed to open session - " + params, e);
}

session.setPassword(password);

//  Create UserInfo instance in order to support SFTP connection to any machine 
//  without a key username and password will be given via UserInfo interface.
UserInfo userInfo = new SftpUserInfo();
session.setUserInfo(userInfo);

try {
    session.connect(connectTimeout);
}
catch (JSchException e) {
    throw new TransferException("Failed to connect to session - " + params, e);
}

boolean isSessionConnected = session.isConnected();

и самое главное:

/**
 * Implements UserInfo instance in order to support SFTP connection to any machine without a key.
 */
class SftpUserInfo implements UserInfo {

    String password = null;

    @Override
    public String getPassphrase() {
        return null;
    }

    @Override
    public String getPassword() {
        return password;
    }

    public void setPassword(String passwd) {
        password = passwd;
    }

    @Override
    public boolean promptPassphrase(String message) {
        return false;
    }

    @Override
    public boolean promptPassword(String message) {
        return false;
    }

    @Override
    public boolean promptYesNo(String message) {
        return true;
    }

    @Override
    public void showMessage(String message) {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...