【问题标题】:com.jcraft.jsch.JSchException: Auth fail errorcom.jcraft.jsch.JSchException:身份验证失败错误
【发布时间】:2020-04-09 23:50:42
【问题描述】:

尝试使用 ssh key auth 连接到主机。以下是我的代码:

package com.mkyong.common;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

/**
 * 
 */
public class UserAuthPubKey {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      try {
            JSch jsch = new JSch();

            String user = "XXXXXXXX";
            String host = "XXXXXXXX.XXXXXXX.com";
            int port = 22;
            String privateKey = "~/.ssh/WF_OPENSSH.ppk";
            String passphrase = "XXXXXXXXXXX";

            jsch.addIdentity(privateKey,passphrase);
            System.out.println("identity added ");

            Session session = jsch.getSession(user, host, port);
            System.out.println("session created.");

            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);

            session.connect();
            System.out.println("session connected.....");

            Channel channel = session.openChannel("sftp");
            channel.setInputStream(System.in);
            channel.setOutputStream(System.out);
            channel.connect();
            System.out.println("shell channel connected....");

            ChannelSftp c = (ChannelSftp) channel;

//            String fileName = "test.txt";
//            c.put(fileName, "./in/");
//            c.exit();
//            System.out.println("done");

        } catch (Exception e) {
            System.err.println(e);
        }
    }
}

我应该在这里做些什么改变。在调试错误似乎发生在session.connect(); 语句。我正在使用私钥和密码进行连接。

【问题讨论】:

    标签: jsch


    【解决方案1】:
    String privateKey = "~/.ssh/WF_OPENSSH.ppk";
    

    那是 PuTTY 格式的密钥文件吗?它是从 PuTTY 密钥生成实用程序 puttygen 生成的吗? Jsch 只读取 OpenSSH 格式的密钥文件,而不是 PuTTY 格式的文件。

    如果您想使用该密钥,您可以使用puttygen 将密钥转换为 OpenSSH 格式。见this question.

    【讨论】:

    • 这是一个 PuTTY 格式的密钥文件,是使用 puttygen 生成的。
    【解决方案2】:

    获取最新版本的 JSch。老版本无故显示Auth Fail

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 2015-12-01
      • 2016-01-01
      • 1970-01-01
      相关资源
      最近更新 更多