«JSchException: отклонить HostKey» при подключении к серверу S SH с Java с использованием JSch - PullRequest
2 голосов
/ 05 января 2020

Я пытаюсь установить sh соединение с MySQL базой в PythonAnywhere, используя S SH в моей программе Java согласно инструкции:
https://help.pythonanywhere.com/pages/AccessingMySQLFromOutsidePythonAnywhere

К сожалению, я получаю эту ошибку каждый раз, и у меня заканчиваются идеи:

com.jcraft.jsch.JSchException: отклонить HostKey: s sh .pythonanywhere.com

public static void main(String[] args) {
    Tunnel tunnel = new Tunnel();
    try {
        tunnel.go();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void go() throws Exception {
    String host = "ssh.pythonanywhere.com";
    String user = "username";
    String password = "password";
    int port = 22;

    int tunnelLocalPort = 9080;
    String tunnelRemoteHost = "username.mysql.pythonanywhere-services.com";
    int tunnelRemotePort = 3306;

    JSch jsch= new JSch();
    Session session = jsch.getSession(user,host,port);
    localUserInfo lui = new localUserInfo();
    session.setPassword(password);
    session.setUserInfo(lui);
    session.connect();
    session.setPortForwardingL(tunnelLocalPort,tunnelRemoteHost,tunnelRemotePort);
    System.out.println("Connecting");
}

class localUserInfo implements UserInfo {
    String passwd;

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

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

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

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

    @Override
    public boolean promptYesNo(String s) { return false; }

    @Override
    public void showMessage(String s) {}
}

Я успешно подключился с помощью PuTTY, но не могу заставить мою программу работать.

Ответы [ 2 ]

2 голосов
/ 06 января 2020

JSch не может проверить S SH ключ хоста сервера.

  • Либо ваш репозиторий ключей хоста содержит другой ключ хоста.

  • Или JSch пытается предложить пользователю проверить ключ хоста вручную, вызвав UserInfo.promptYesNo. И когда ваша реализация возвращает false, ключ хоста отклоняется.


Чтобы узнать, как правильно проверить ключ хоста, см .:
Как resolve Java UnknownHostKey, при использовании библиотеки SFTP JSch?


Обратите внимание, что даже в PuTTY вы должны были проверить ключ хоста при первом соединении.

0 голосов
/ 05 января 2020

Хорошо,

Кажется, что добавление:

java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

помогло решить Исключение.

...