Java 使用JSch 0.1.48获取AuthFail异常,但在使用密码身份验证的0.1.49及更新版本中不获取AuthFail异常
以前JSCH0.1.48工作正常,但最近它停止工作并引发异常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时,它运行良好。但
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<代码>开始