com.jcraft.jsch.JSchException:验证失败错误

时间:2014-06-05 22:23:30

标签: jsch

尝试使用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();语句中。我正在使用私钥和密码进行连接。

2 个答案:

答案 0 :(得分:3)

String privateKey = "~/.ssh/WF_OPENSSH.ppk";

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

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

答案 1 :(得分:0)

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

相关问题