“ JSchException:拒绝HostKey”,当使用JSch从Java连接到SSH服务器时

问题描述 投票:2回答:2

我尝试根据指示在我的Java程序中使用SSH在PythonAnywhere中与MySQL数据库建立连接:https://help.pythonanywhere.com/pages/AccessingMySQLFromOutsidePythonAnywhere

不幸的是,我每次都会收到此错误,而我的想法已用尽:

com.jcraft.jsch.JSchException:拒绝HostKey:ssh.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成功连接,但无法使我的程序正常工作。

java ssh jsch pythonanywhere ssh-tunnel
2个回答
0
投票

确定,

似乎添加:

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

帮助解决异常。


0
投票

JSch无法验证SSH服务器主机密钥。

  • 您的主机密钥存储库中都包含其他主机密钥。

  • 或者JSch尝试通过调用UserInfo.promptYesNo提示用户手动验证主机密钥。当您的实现返回false时,主机密钥将被拒绝。


有关验证主机密钥的正确方法,请参阅:How to resolve Java UnknownHostKey, while using JSch SFTP library?


注意,即使在PuTTY中,您也必须在第一个连接上验证主机密钥。

© www.soinside.com 2019 - 2024. All rights reserved.