【问题标题】:jsch auth fail without private key没有私钥的 jsch 身份验证失败
【发布时间】:2015-01-16 01:52:09
【问题描述】:

我正在使用 Jsch 来执行 ssh 命令。 当我传递私钥时它工作得很好,但我需要它在没有私钥传递的情况下工作(它已经被复制到那里)。

所以在控制台中,我可以在没有任何东西的情况下通过 ssh 连接到该服务器。但是 Jsch 抛出 Auth Fail。我该怎么做?

Session session = jSch.getSession(server);
session.setConfig("StrictHostKeyChecking", "no");
session.setConfig("UserKnownHostsFile", "/dev/null");
session.connect(connectTimeout);

【问题讨论】:

    标签: java ssh jsch ssh-keys openssh


    【解决方案1】:

    根据设计,您始终需要拥有私钥来证明您就是您所说的那个人。您的私钥永远不会“已经复制到那里”。如果您在“没有任何东西”的情况下成功地在 shell 中与 ssh 连接,那肯定是因为您的 ssh 被配置为找到私钥并且它成功地这样做了。

    【讨论】:

    • 是的,例如我之前做过 ssh-copy-id。在控制台中,我可以 ssh 到此服务器。 Jsch做不到
    • @Alexanderalex ssh-copy-id 将您的公钥复制到服务器,而不是您的私钥。当您在 shell 中 ssh 时,它肯定会访问您的私钥(可能存储在 ~/.ssh 中)。
    • 我在 .ssh 中也有配置。有指定的身份文件。
    • @Alexanderalex 那么你的问题真的是“我如何让 JSch 使用我的 ssh 配置以便自动找到私钥?”?如果是这样,您可以查看this example
    • 好的,谢谢!但是如果有能力不将路径传递给 config ?我的意思是 Jsch 使用 .ssh/config。
    猜你喜欢
    • 1970-01-01
    • 2015-04-20
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多