Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSch 0.1.48获取AuthFail异常,但在使用密码身份验证的0.1.49及更新版本中不获取AuthFail异常_Java_Ssh_Jsch - Fatal编程技术网

Java 使用JSch 0.1.48获取AuthFail异常,但在使用密码身份验证的0.1.49及更新版本中不获取AuthFail异常

Java 使用JSch 0.1.48获取AuthFail异常,但在使用密码身份验证的0.1.49及更新版本中不获取AuthFail异常,java,ssh,jsch,Java,Ssh,Jsch,以前JSCH0.1.48工作正常,但最近它停止工作并引发异常 com.jcraft.jsch.JSchException:Auth fail 位于com.jcraft.jsch.Session.connect(Session.java:484) 位于com.jcraft.jsch.Session.connect(Session.java:162) 位于ftptrial.main.TestTop.main(TestTop.java:52) 当我将JSch的版本更改为0.1.49时,它运行良好。但

以前JSCH0.1.48工作正常,但最近它停止工作并引发异常

com.jcraft.jsch.JSchException:Auth fail
位于com.jcraft.jsch.Session.connect(Session.java:484)
位于com.jcraft.jsch.Session.connect(Session.java:162)
位于ftptrial.main.TestTop.main(TestTop.java:52)
当我将JSch的版本更改为0.1.49时,它运行良好。但我无法找出原因

session = jsch.getSession(userName, hostName, portNumber);
session.setPassword(password);
session.connect();
JSch 0.1.48的日志:

INFO:连接到abc.defg.com端口22
信息:已建立连接
信息:远程版本字符串:SSH-2.0-1.82
信息:本地版本字符串:SSH-2.0-JSCH-0.1.48
信息:校验密码:aes256 ctr、aes192 ctr、aes128 ctr、aes256 cbc、aes192 cbc、aes128 cbc、3des ctr、arcfour、arcfour128、arcfour256
信息:CheckKexes:diffie-hellman-group14-sha1
信息:diffie-hellman-group14-sha1不可用。
信息:SSH\u MSG\u KEXINIT已发送
信息:收到SSH_MSG_KEXINIT
信息:kex:服务器:diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
信息:kex:server:ssh-rsa
信息:kex:服务器:twofish256 cbc、twofish cbc、twofish128 cbc、河豚cbc、3des cbc、arcfour、cast128 cbc、aes256 cbc、aes128 cbc
信息:kex:服务器:twofish256 cbc、twofish cbc、twofish128 cbc、河豚cbc、3des cbc、arcfour、cast128 cbc、aes256 cbc、aes128 cbc
信息:kex:服务器:hmac-sha1、hmac-md5、hmac-sha1-96、hmac-md5-96
信息:kex:服务器:hmac-sha1、hmac-md5、hmac-sha1-96、hmac-md5-96
信息:kex:server:zlib,无
信息:kex:server:zlib,无
信息:kex:服务器:
信息:kex:服务器:
信息:kex:客户:diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1
INFO:kex:client:ssh-rsa、ssh-dss
信息:kex:客户:aes128控制中心、aes128控制中心、3des控制中心、3des控制中心、河豚控制中心、aes192控制中心、aes256控制中心
信息:kex:客户:aes128控制中心、aes128控制中心、3des控制中心、3des控制中心、河豚控制中心、aes192控制中心、aes256控制中心
信息:kex:客户:hmac-md5、hmac-sha1、hmac-sha1-96、hmac-md5-96
信息:kex:客户:hmac-md5、hmac-sha1、hmac-sha1-96、hmac-md5-96
信息:kex:客户:无
信息:kex:客户:无
信息:kex:客户:
信息:kex:客户:
信息:kex:server->client aes128 cbc hmac-md5无
信息:kex:客户端->服务器aes128 cbc hmac-md5无
信息:SSH\u MSG\u KEXDH\u INIT已发送
信息:期待SSH\u MSG\u KEXDH\u回复
信息:ssh\u rsa\u验证:签名为真
警告:已将“abc.defg.com”(RSA)永久添加到已知主机列表中。
信息:SSH\u MSG\u已发送新密钥
信息:收到SSH\u MSG\u新密钥
信息:SSH\u消息\u服务\u请求已发送
信息:SSH\u消息\u服务\u接收
信息:可以继续的身份验证:公钥、键盘交互、密码
信息:下一个身份验证方法:公钥
信息:可以继续的身份验证:键盘交互、密码
信息:下一个身份验证方法:键盘交互
信息:可以继续的身份验证:密码
信息:下一个身份验证方法:密码
信息:从abc.defg.com端口22断开连接
com.jcraft.jsch.JSchException:Auth fail
JSch 0.1.54的日志

INFO:连接到abc.defg.com端口22
信息:已建立连接
信息:远程版本字符串:SSH-2.0-1.82
信息:本地版本字符串:SSH-2.0-JSCH-0.1.54
信息:校验密码:aes256 ctr、aes192 ctr、aes128 ctr、aes256 cbc、aes192 cbc、aes128 cbc、3des ctr、arcfour、arcfour128、arcfour256
信息:复选框:diffie-hellman-group14-sha1、ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521
信息:diffie-hellman-group14-sha1不可用。
信息:检查签名:ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-sha2-nistp521
信息:SSH\u MSG\u KEXINIT已发送
信息:收到SSH_MSG_KEXINIT
信息:kex:服务器:diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
信息:kex:server:ssh-rsa
信息:kex:服务器:twofish256 cbc、twofish cbc、twofish128 cbc、河豚cbc、3des cbc、arcfour、cast128 cbc、aes256 cbc、aes128 cbc
信息:kex:服务器:twofish256 cbc、twofish cbc、twofish128 cbc、河豚cbc、3des cbc、arcfour、cast128 cbc、aes256 cbc、aes128 cbc
信息:kex:服务器:hmac-sha1、hmac-md5、hmac-sha1-96、hmac-md5-96
信息:kex:服务器:hmac-sha1、hmac-md5、hmac-sha1-96、hmac-md5-96
信息:kex:server:zlib,无
信息:kex:server:zlib,无
信息:kex:服务器:
信息:kex:服务器:
信息:kex:客户:ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521、diffie-hellman-group-exchange-sha256、diffie-hellman-group-exchange-sha1、diffie-hellman-group1-sha1
信息:kex:客户端:ssh rsa、ssh dss、ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-sha2-nistp521
信息:kex:客户:aes128 ctr、aes128 cbc、3des ctr、3des cbc、河豚cbc、aes192 ctr、aes192 cbc、aes256 ctr、aes256 cbc
信息:kex:客户:aes128 ctr、aes128 cbc、3des ctr、3des cbc、河豚cbc、aes192 ctr、aes192 cbc、aes256 ctr、aes256 cbc
信息:kex:客户:hmac-md5、hmac-sha1、hmac-sha2-256、hmac-sha1-96、hmac-md5-96
信息:kex:客户:hmac-md5、hmac-sha1、hmac-sha2-256、hmac-sha1-96、hmac-md5-96
信息:kex:客户:无
信息:kex:客户:无
信息:kex:客户:
信息:kex:客户:
信息:kex:server->client aes128 cbc hmac-md5无
信息:kex:客户端->服务器aes128 cbc hmac-md5无

信息:SSH_MSG_KEX_DH_GEX_请求(1024JSch 0.1.48和JSch 0.1.49都是5年前的。不要使用它们

使用最新版本的JSch(目前为0.1.55)


如果没有更多信息,我无法最终解释这种差异,但由于0.1.54实际上成功地使用了键盘交互身份验证(与0.1.48中不成功的密码身份验证相比),我会将此归咎于
UserAuthKeyboardInteractive.start

  • 0.1.48:

    prompt[0].toLowerCase().startsWith("password:")){
    
  • 0.1.49:

    prompt[0].toLowerCase().indexOf("password:") >= 0){
    
您的代码实际上是在尝试密码身份验证。但JSch有一个启发式方法,即如果它得到一个密码的键盘交互身份验证提示,它将使用键盘交互身份验证,而不是密码身份验证

我猜来自服务器的提示是

用户密码:

So 0.1.48<代码>开始