首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"JSchException:拒绝HostKey“当使用JSch从JSch连接到SSH服务器时

"JSchException:拒绝HostKey“当使用JSch从JSch连接到SSH服务器时
EN

Stack Overflow用户
提问于 2020-01-05 19:00:42
回答 4查看 9.7K关注 0票数 4

我试图在我的Java程序中使用SSH在PythonAnywhere中建立与PythonAnywhere数据库的连接,按照以下说明:

https://help.pythonanywhere.com/pages/AccessingMySQLFromOutsidePythonAnywhere

不幸的是,我每次都会犯这个错误,而且我的想法已经没有了:

com.jcraft.jsch.JSchException:拒绝HostKey: ssh.pythonanywhere.com

代码语言:javascript
复制
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连接,但我的程序无法工作。

EN

回答 4

Stack Overflow用户

发布于 2020-01-05 21:07:55

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

  • --您的主机密钥存储库--包含不同的主机密钥。

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

有关验证主机密钥的正确方法,请参见:

How to resolve Java UnknownHostKey, while using JSch SFTP library?

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

票数 4
EN

Stack Overflow用户

发布于 2020-01-05 19:36:44

好的,

似乎补充如下:

代码语言:javascript
复制
java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

帮助解决了这一例外。

票数 0
EN

Stack Overflow用户

发布于 2021-12-22 23:34:55

FWIW,在我的例子中,使用jsch以编程方式将ssh输入到另一台计算机,即使我使用的是用户名/密码凭据,我也必须有手动ssh用户名/pw登录(类型ecdsa-sha2-nistp 256)添加的密钥,以及在使用基于rsa键的登录(类型ssh-rsa)时添加的密钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59603213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档