当前位置: 首页 > 知识库问答 >
问题:

获取“com.jcraft.jsch.jschexception:Auth fail”-但是“ssh”可以使用公钥身份验证登录

艾安和
2023-03-14
String user = "user.name";
String host = "hostip";
try
{
    JSch jsch = new JSch();
    Session session = jsch.getSession(user, host);
    session.setConfig("StrictHostKeyChecking", "no");
    System.out.println("Establishing Connection...");
    session.connect();
    int assinged_port=session.setPortForwardingL(lport, rhost, rport);
    System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);
}
catch(Exception e){System.err.print(e);}

共有1个答案

徐嘉勋
2023-03-14

您的OpenSSHssh命令自动使用您在.ssh文件夹中为OpenSSH配置的私钥。

JSch不会自动使用OpenSSH键。您必须明确地告诉它使用什么密钥。
参见我们可以使用JSch进行基于SSH密钥的通信吗?

还要注意,JSch并不支持OpenSSH所支持的所有密钥格式。
使用JSch时请参阅“无效的PrivateKey”

 类似资料:
  • 我正在尝试使用JSch连接一个远程服务器,但我遇到了“auth fail”异常。下面是我的代码: 但是,当我尝试使用命令从iTerm进行ssh时,我可以使用公钥身份验证成功地访问远程服务器。

  • 通常情况下,访问远程服务器上的 Git 仓库要受到限制。你可能不希望任何人都能读取文件,或者至少不能改动文件吧。在这种情况下,进行有效的认证就是非常必要地。 你可能已经通过你所使用的浏览器了解了 “HTTPS” 协议,尽管它使用起来很简单,但是很多系统管理员还是会出于各种原因去选择使用更为普遍的 “SSH” 协议。在这种协议之下,当涉及到身份验证时,你就很可能需要 “SSH公钥”。 对于这种类型的

  • 我正在尝试从java密钥库中提取一个私钥,然后将其提供给Ganymed SSH,以便建立与公钥身份验证的连接。然而,它拒绝联系。 我可以通过Cygwin()与以下程序生成的文件成功连接,但程序本身无法通过同一台机器上的身份验证。我做错了什么? 我没有得到异常,connection.authenticateWithPublicKey(String,char[],String)简单地返回false,所

  • 我正在尝试使用私钥和公钥对为sftp服务器设置身份验证。 我已经在本地计算机上设置了带有Bitvise SSH服务器的sftp服务器。我用SSH服务器生成了私钥和公钥。我已经在SSH服务器的主机密钥部分上设置了私钥,并且已经创建了一个虚拟帐户并将公钥设置到该帐户。 谢谢

  • 我遵循了GitHub教程中的所有内容:https://help.github.com/articles/generating-ssh-keys 我在存储库的目录中执行了所有命令。我成功到达教程的末尾,并收到消息:“嗨,用户名!你已成功通过身份验证,但 GitHub 不提供外壳访问。 然而,当我尝试做推送之类的事情时,它仍然要求输入我的用户名和密码。

  • JSch日志: 的日志: