Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSch:UnknownHostKey异常,即使已知的\u hosts文件中存在hostkey指纹_Java_Ssh_Vagrant_Jsch - Fatal编程技术网

Java JSch:UnknownHostKey异常,即使已知的\u hosts文件中存在hostkey指纹

Java JSch:UnknownHostKey异常,即使已知的\u hosts文件中存在hostkey指纹,java,ssh,vagrant,jsch,Java,Ssh,Vagrant,Jsch,关于此异常,已经有两个问题: 及 我正在使用Windows机器,并试图连接到运行Ubuntu的Vagrant创建的VM。这是我的密码: public static void main(String[] args) { String host = "localhost"; String username = "vagrant"; int port = 2200; String privateKey = "C:\\keys\\openSSH_pair1\\ope

关于此异常,已经有两个问题:

我正在使用Windows机器,并试图连接到运行Ubuntu的Vagrant创建的VM。这是我的密码:

public static void main(String[] args) {
    String host = "localhost";
    String username = "vagrant";
    int port = 2200;
    String privateKey = "C:\\keys\\openSSH_pair1\\open_ssh_private";
    JSch js = new JSch();
    try {
        js.addIdentity(privateKey, "pass");
        js.setKnownHosts("C:\\Users\\user\\.ssh\\known_hosts");
        Session session = js.getSession(username, host, port);
        session.connect();
        System.out.println("Connected");
    } catch (JSchException e) {
        e.printStackTrace();
    }
}
@帕斯卡建议将
strichhostkeychecking
设置为
no
,这对我很有效,但这不是首选的解决方案。他首选的解决方案是从命令行SSH,以便将主机添加到
known\u hosts
文件中。我已经安装并执行了Git
ssh-I openSSH\u pair1\open\u ssh\u privatevagrant@localhost-第2200页
并在提示输入密码短语和建立连接之前收到此输出

主机“[localhost]:2200([127.0.0.1]:2200)”的真实性无法验证 成立。ECDSA密钥指纹为 11:5d:55:29:8a:77:d8:08:b4:00:9b:a3:61:93:fe:e5。你确定你想要吗 要继续连接(是/否)?是警告:永久添加 “[localhost]:2200”(ECDSA)添加到已知主机列表中

因此,现在我的
git_home\.ssh中的
known_hosts
文件包含
localhost:2200
的条目,我还将
known_hosts
文件放入
user_home\.ssh
。我还将我的私钥放在我尝试ssh的VM上,并运行它来生成一个公钥并将其添加到
授权的\u密钥中

ssh-keygen-y-f open\u ssh\u private>open\u ssh\u gen.pub
cat open\u ssh\u gen.pub>~/.ssh/authorized\u密钥
然而,我仍然得到这个例外

com.jcraft.jsch.JSchException:UnknownHostKey:localhost。RSA密钥指纹是50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
位于com.jcraft.jsch.Session.checkHost(Session.java:797)
位于com.jcraft.jsch.Session.connect(Session.java:342)
位于com.jcraft.jsch.Session.connect(Session.java:183)
位于connect.Main.Main(Main.java:24)
另一个问题的答案建议添加以下内容,这对我也不起作用

js.setKnownHosts("C:\\Users\\user\\.ssh\\known_hosts");

问题是您已将ECDSA主机密钥添加到
已知的\u主机
,因为
ssh
更喜欢该密钥类型:

ECDSA密钥指纹是11:5d:55:29:8a:77:d8:08:b4:00:9b:a3:61:93:fe:e5

但是JSch更喜欢RSA密钥,它在已知主机中找不到RSA密钥:

RSA密钥指纹是50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3


您可能需要JCE来在JSch中启用ECDSA


或者使
ssh
将RSA密钥与
-o HostKeyAlgorithms=ssh RSA一起使用

您还可以使用ssh-keyscan

ssh-keyscan -t rsa example.com