首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有公钥的sftp不起作用。

带有公钥的sftp不起作用。
EN

Stack Overflow用户
提问于 2017-03-14 14:19:49
回答 1查看 3K关注 0票数 1

使用ssh-keygen生成RSA公钥。

试图通过sftp连接远程服务器:

代码语言:javascript
复制
 JSch jsch = new JSch();
        try {

            String publicKey = "/home/testuser/.ssh/id_rsa.pub";
            jsch.addIdentity(publicKey);
            session = jsch.getSession(sftpUsername, sftpHostname, sftpPort);
            session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
        } catch (JSchException e) {
            logger.error("Unable to obtain session", e);
        }

出现以下错误:

代码语言:javascript
复制
com.jcraft.jsch.JSchException: invalid privatekey: /home/testuser/.ssh/id_rsa.pub
        at com.jcraft.jsch.IdentityFile.<init>(IdentityFile.java:261)
        at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:135)
        at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:130)
        at com.jcraft.jsch.JSch.addIdentity(JSch.java:206)
        at com.jcraft.jsch.JSch.addIdentity(JSch.java:192)

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-14 14:27:37

你有:

代码语言:javascript
复制
jsch.addIdentity(publicKey);

JSch javadoc说:

public void addIdentity(String prvkey) throws JSchException; 添加要用于公钥身份验证的标识。在将其注册到identityRepository之前,它将使用密码破译。 参数:

  • prvkey -私钥文件的文件名。这也被用作密钥的标识名。相应的公钥被假定在同名、后缀为.pub的文件中。

当JSch想要私钥时,您已经提供了公钥。

如果你想一想,这是有道理的。公钥没什么秘密。JSch想要一个秘密,这样它就能证明你是谁。

您的私钥可能在~/.ssh/id_rsa中(没有.pub扩展)。

您可能需要使用addIdentity的两个参数版本,以便提供密码以解密私钥。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42788509

复制
相关文章

相似问题

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