2016-10-05 6 views
2

Я пытаюсь выполнить команду Unix с Java. Я использую библиотеку JSch.Получение «Auth cancel» при аутентификации с использованием пароля с помощью JSch

Вот мой код:

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)); 
} 

Я получаю ошибку "Auth Отмена". Я не могу войти в систему, так что прежде чем я смогу выполнить что угодно.

Вот лог с просьбой:

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

Вы пробовали записывать JSch на уровне DEBUG? возможно, это помогает: http://www.jcraft.com/jsch/examples/Logger.java.html – ptrk

+0

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

ответ

1

У вас есть интерактивная проверка подлинности на клавиатуре как предпочтительный метод аутентификации (это значение по умолчанию).

Однако вы не выполняете запрос для учетных данных. setPassword не используется (и не может) для интерактивной аутентификации клавиатуры.

Если вы действительно хотите использовать пароль аутентификации, сделать его предпочтительным:

config.put("PreferredAuthentications", "password"); 

Излишне говорить: Если вы заботитесь о безопасности, не используйте StrictHostKeyChecking=no!

 Смежные вопросы

  • Нет связанных вопросов^_^