在使用Jsch连接linux服务器的过程中,有时候会遇到:
com.jcraft.jsch.JSchException:
Auth fail 或者
com.jcraft.jsch.JSchException: Auth cancel
问题,表面的意思就是jsch验证失败,经过探索和实验,可能的原因是以下2条:
- 你所使用的用户不能进行远程登录,比如CentOS6,默认root不能进行远程登录,这一点需要引起注意
- linux服务器的配置文件 /etc/ssh/sshd_config 中 GSSAPIAuthentication 的值应该是 yes
可以尝试使用一下解法:
- 在路径 /etc/ssh/sshd_config 文件中,PermitRootLogin yes 把这一行通过注释取消掉,也就是允许root远程登录。
- 在路径 /etc/ssh/sshd_config 中 将GSSAPIAuthentication 修改为 no, 或者在java代码中增加
session.setConfig("userauth.gssapi-with-mic", "no"),同时不要忘了 session.setConfig("StrictHostKeyChecking", "no"); - 如果想加快SSH的登录的速度,可以把路径 /etc/ssh/sshd_config 文件中 UseDNS yes 修改为 no
- 重启sshd服务,service sshd restart