1

Jsch,基于 private.ppk 的登录。

目前我有以下代码来 ssh 登录,但由于不提供密钥而出现异常。

以下是我得到的错误

om.jcraft.jsch.JSchException: Auth cancel


 JSch jsch = new JSch();
        Session session = jsch.getSession(user_name, host, 22);


        UserInfo ui = new SSHUserInfo(password, true);
        session.setUserInfo(ui);
        //connect to remove server
        session.connect();

        //sudo login bamboo
        if (null != session && session.isConnected()) {
            session.disconnect();
        }
4

2 回答 2

2
JSch jsch = new JSch();

// Here privateKey is a file path like "/home/me/.ssh/secret_rsa "
// passphrase is passed as a string like "mysecr"
jsch.addIdentity(privateKey, passphrase);

session = jsch.getSession(user, host, port);
session.setConfig("StrictHostKeyChecking", "no"); 
// Or yes, up to you. If yes, JSch locks to the server identity so it cannot
// be swapped by another with the same IP.

session.connect();
channel = session.openChannel("shell");
out = channel.getOutputStream();
channel.connect();
于 2013-01-08T20:20:28.717 回答
0

文件后缀“.ppk”意味着您正在尝试使用 Putty 的私钥,我猜。

JSch 从 0.1.49 开始支持 Putty 的私钥,如果您的密钥已加密,则必须在您的环境中安装“Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files”[1]。

然后,如果您经常使用 Pageant,您可能有兴趣尝试 jsch-agent-proxy[2]。

[1] http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
[2] https://github.com/ymnk/jsch-agent-proxy
于 2013-01-09T08:30:30.280 回答