首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java进行SSH私钥验证

使用Java进行SSH私钥验证
EN

Stack Overflow用户
提问于 2018-02-02 00:19:53
回答 1查看 1K关注 0票数 3

我的用户需要根据他的Git存储库验证他的私钥。它类似于任何数据库客户端工具中的“测试连接”按钮。

我使用JSCH在Java中执行此验证(我只需要使用SSH进行连接并告知连接成功)。下面是我的Java代码

代码语言:javascript
复制
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();
        }
    }
}

在这样做的时候,我得到了下面的异常

代码语言:javascript
复制
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)

我错过了什么吗?请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2018-02-02 00:35:29

您没有通过addIdentity方法加载密钥。您实际上是将私钥设置为"c:\\me\\ssh-keys\\config_31_jan"

您需要先加载文件的内容。例如:

代码语言:javascript
复制
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();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48567286

复制
相关文章

相似问题

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