我的用户需要针对他的Git存储库验证他的私钥。它类似于任何DB Client工具中的“测试连接”按钮。
我正在使用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)
我不想做任何事吗?请帮忙
答案 0 :(得分:1)
您没有通过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();
}
}