2016-10-05 3 views
2

JavaからUnixコマンドを実行しようとしています。私はJSchライブラリを使用しています。JSchでパスワードを使用して認証するときに「Auth cancel」を取得する

try{ 
    Session session = new JSch().getSession("*****", "****", 22);   
    session.setPassword("****"); 
    java.util.Properties config = new java.util.Properties(); 
    config.put("StrictHostKeyChecking", "no"); 
    session.setConfig(config); 
    session.connect(); 
    Channel channel=session.openChannel("exec"); 
    ((ChannelExec)channel).setCommand("pwd"); 
    InputStream in=channel.getInputStream(); 
    byte[] tmp=new byte[1024]; 
    while(in.available()>0){ 
      int i=in.read(tmp, 0, 1024); 
      System.out.print(new String(tmp, 0, i)); 
    } 
    channel.disconnect(); 
    session.disconnect(); 
}catch(Exception e){ 
    System.out.println(org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace(e)); 
} 

私は "認証がキャンセル" エラーを得続ける:

は、ここに私のコードです。私は何かを実行する前にログインすることができません。要求されたよう

はここにログです:

INFO: Connecting to ***** port 22 
INFO: Connection established 
INFO: Remote version string: SSH-2.0-6.3.8.79 SSH Tectia Server 
INFO: Local version string: SSH-2.0-JSCH-0.1.42 
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 
INFO: aes256-ctr is not available. 
INFO: aes192-ctr is not available. 
INFO: aes256-cbc is not available. 
INFO: aes192-cbc is not available. 
INFO: arcfour256 is not available. 
INFO: SSH_MSG_KEXINIT sent 
INFO: SSH_MSG_KEXINIT received 
INFO: kex: server->client aes128-ctr hmac-sha1 none 
INFO: kex: client->server aes128-ctr hmac-sha1 none 
INFO: SSH_MSG_KEXDH_INIT sent 
INFO: expecting SSH_MSG_KEXDH_REPLY 
INFO: ssh_rsa_verify: signature true 
WARN: Permanently added '*****' (RSA) to the list of known hosts. 
INFO: SSH_MSG_NEWKEYS sent 
INFO: SSH_MSG_NEWKEYS received 
INFO: SSH_MSG_SERVICE_REQUEST sent 
INFO: SSH_MSG_SERVICE_ACCEPT received 
INFO: Authentications that can continue: keyboard-interactive,password 
INFO: Next authentication method: keyboard-interactive 
INFO: Disconnecting from **** port 22 
com.jcraft.jsch.JSchException: Auth cancel 
    at com.jcraft.jsch.Session.connect(Session.java:451) 
    at com.jcraft.jsch.Session.connect(Session.java:150) 
    at unix.UnixConnect.main(UnixConnect.java:19) 

私が間違って何をしているのですか?

+0

[Java JSchException:Auth cancel]の重複している可能性があります(http://stackoverflow.com/questions/30187755/java-jschexception-auth-cancel) – Abhishek

+1

DEBUGレベルでJSchのログ記録を試しましたか?これはおそらく役立ちます:http://www.jcraft.com/jsch/examples/Logger.java.html – ptrk

+0

http://stackoverflow.com/questions/2901248/com-jcraft-jsch-jschexa-auth-cancel – Abhishek

答えて

1

優先認証方式としてキーボード対話型認証が設定されています(デフォルト)。

ただし、資格情報のプロンプトを実装しません。 setPasswordは、キーボードの対話型認証には使用できません(また、使用できません)。

あなたが実際にパスワード認証を使用する場合、それは好ましくます

言うまでもなく
config.put("PreferredAuthentications", "password"); 

:あなたはセキュリティを気にする場合は、StrictHostKeyChecking=noを使用しないでください!

関連する問題