2013-01-08 204 views
0

Jsch,基于private.ppk的登录。基于Jsch证书的身份验证和登录身份验证取消

目前我有以下代码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(); 
     } 

回答

1
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(); 
0

文件后缀“.ppk”意味着你要使用腻子的pridate关键,我猜。

自从0.1.49, 以来,JSch支持Putty的私钥,如果您的密钥被加密,则必须在您的环境中安装“Java加密扩展(JCE)无限强度管辖策略文件”[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