首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jsch异常: Auth带私钥失败

Jsch异常: Auth带私钥失败
EN

Server Fault用户
提问于 2017-08-30 12:13:51
回答 2查看 29.7K关注 0票数 3

我使用下面的代码连接远程服务器,并按照下面的步骤连接私钥/公钥生成&将公钥与授权密钥连接起来。

代码:

代码语言:javascript
复制
private Session createSession() throws JSchException {
        JSch jsch = new JSch();
            jsch.addIdentity(privateKey);                   //add private key path as ~/.ssh/id_rsa
            Session session;
            session = jsch.getSession(user, host, port);
            java.util.Properties config = new java.util.Properties();

        Properties cfg = new Properties();
            cfg.put("trust", "true");
            cfg.put("StrictHostKeyChecking", "no");
            cfg.put("HashKnownHosts", "yes");

            session.setConfig(cfg);
            session.connect();
            return session;
    }

步骤:

代码语言:javascript
复制
1. I can able to generate private/public key in the path ~/.ssh/id_rsa(private key) and ~/.ssh/id_rsa.pub(public key)
    >> ssh-keygen (or) ssh-keygen -t rsa -b 4096
   Note: Generated key with no passphrase
2. I have added public key with authorized_keys with below command
    >> ssh user@host "echo \"`cat ~/.ssh/id_rsa.pub`\" >> .ssh/authorized_keys"

不过,我面临的例外是"com.jcraft.jsch.JSchException:八月失败“。请引导我继续前进。

EN

回答 2

Server Fault用户

发布于 2018-01-02 19:30:55

我相信这种情况的发生有几个原因:

  • 私钥是受密码保护的,您已经验证的情况并非如此。
  • 包含密钥的目录是加密的。
  • 对.ssh目录或公共/私钥的文件权限太打开。它们应该是:
    • ssh目录: 700
    • 公钥: 644
    • 私钥: 600 (甚至400)

  • 还可能发生的是授权密钥文件中的公钥格式不兼容。您可能需要将其转换为不同的格式。假设OpenSSH:
    • 转换为SSH2:ssh-keygen -i -f /path/to/private/key ssh-keygen -i -f /path/to/public/key
    • 从SSH2:ssh-keygen -e -f /path/to/private/key ssh-keygen -e -f /path/to/public/key转换
票数 4
EN

Server Fault用户

发布于 2023-04-28 17:32:27

JSch不支持rsa-sha2。而且,由于JSch似乎不再被更新,它很可能永远不会更新。试试这个ssh-keygen -m PEM -t rsa -b 2048的工作。

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

https://serverfault.com/questions/871240

复制
相关文章

相似问题

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