我的用户需要根据他的Git存储库验证他的私钥。它类似于任何数据库客户端工具中的“测试连接”按钮。
我使用JSCH在Java中执行此验证(我只需要使用SSH进行连接并告知连接成功)。下面是我的Java代码
public class SSHConnect {
private String file = "c:\\me\\ssh-keys\\config_31_jan";
public static void main(String... args) {
new SSHConnect().invoke();
}
public void invoke () {
JSch jSch = new JSch();
try {
jSch.addIdentity(file);
Session session = jSch.getSession("MY_USER_NAME","github.my_company.com",22) ;
session.connect();
} catch (JSchException e) {
e.printStackTrace();
}
}
}在这样做的时候,我得到了下面的异常
com.jcraft.jsch.JSchException: UnknownHostKey: github.***.com. RSA key fingerprint is 6e:23:f4:4a:49:fd:18:77:ce:35:3e:ae:7c:a9:f6:ed
at com.jcraft.jsch.Session.checkHost(Session.java:805)
at com.jcraft.jsch.Session.connect(Session.java:345)
at com.jcraft.jsch.Session.connect(Session.java:183)
at com.pcfdev.main.SSHConnect.invoke(SSHConnect.java:23)
at com.pcfdev.main.SSHConnect.main(SSHConnect.java:13)我错过了什么吗?请帮帮忙
发布于 2018-02-02 00:35:29
您没有通过addIdentity方法加载密钥。您实际上是将私钥设置为"c:\\me\\ssh-keys\\config_31_jan"
您需要先加载文件的内容。例如:
private String filePath = "c:\\me\\ssh-keys\\config_31_jan";
public void invoke () {
File f = new File (filePath );
String key = new String(Files.readAllBytes(f.toPath()));
JSch jSch = new JSch();
try {
jSch.addIdentity(key);
Session session = jSch.getSession("MY_USER_NAME","github.my_company.com",22) ;
session.connect();
} catch (JSchException e) {
e.printStackTrace();
}
}https://stackoverflow.com/questions/48567286
复制相似问题