我正在尝试使用Jsch在Java中建立SSH连接.我的代码产生以下异常:
com.jcraft.jsch.JSchException: UnknownHostKey: mywebsite.com.
RSA key fingerprint is 22:fb:ee:fe:18:cd:aa:9a:9c:78:89:9f:b4:78:75:b4
Run Code Online (Sandbox Code Playgroud)
我找不到如何在Jsch文档中验证主机密钥.我在下面提供了我的代码.
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class ssh {
public static void main(String[] arg) {
try {
JSch jsch = new JSch();
//create SSH connection
String host = "mywebsite.com";
String user = "username";
String password = "123456";
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.connect();
} catch(Exception e) {
System.out.println(e);
}
}
}
Run Code Online (Sandbox Code Playgroud) 有关此异常的问题有两个:
我正在使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
@Pascal建议设置strictHostKeyChecking为no,对我有用,但这不是首选的解决方案.他首选的解决方案是从命令行进行SSH,以便将主机添加到known_hosts文件中.我已经安装并执行了Git ssh -i openSSH_pair1\open_ssh_private vagrant@localhost -p 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)添加到已知主机列表中.
所以现在我的known_hosts文件git_home\.ssh包含一个条目localhost:2200,我也把known_hosts文件放入user_home\.ssh.我还把我的私钥放在VM上我试图ssh并运行它来生成一个公钥并将其添加到authorized_keys …