【问题标题】:Getting "Auth cancel" when authenticating using password with JSch使用 JSch 使用密码进行身份验证时获取“身份验证取消”
【发布时间】:2016-10-05 21:35:40
【问题描述】:

我正在尝试从 Java 执行 Unix 命令。我正在使用 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 Cancel”错误。我无法登录,所以在我执行任何操作之前。

这是所要求的日志:

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)

我做错了什么?

【问题讨论】:

标签: java ssh jsch


【解决方案1】:

您将键盘交互式身份验证设置为首选身份验证方法(这是默认设置)。

但是,您没有实现凭据提示。 setPassword 不(也不能)用于键盘交互式身份验证。

如果您确实想使用密码身份验证,请将其设为首选:

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

不用说:如果您关心安全性,请不要使用StrictHostKeyChecking=no

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-16
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多