手动测试SFTP连接OK,程序JSCH连接SFTP就报错com.jcraft.jsch.JSchException: Auth fail。已经确认了N遍,用户名/密码/ip配置绝对没错。求各位大神积极发言帮忙解决!!不胜感激!!
请尝试
首先确保服务器上的/etc/ssh/sshd_config中的PasswordAuthentication设置为
PasswordAuthenticationyes
如果还不行,可以参考 sftpauthfail或者 SFTP连接异常CouldnotconnecttoSFTPserver.Causedby:com.jcraft.jsch.JSchException:Authfail
发现很多网上代码都指定StrictHostKeyChecking选项为no,就把代码改为下面这样:
privatestaticSessiongetSession(Stringuser,Stringpasswd,Stringhost,intport)throwsJSchException{JSchjsch=newJSch();Sessionsession=jsch.getSession(user,host,port);session.setConfig("StrictHostKeyChecking","no");//不验证host-key,验证会失败。session.setPassword(passwd);session.connect();returnsession;}
这个问题其实是因为jsch进行严格的SSH公钥检查导致的,禁用SSH远程主机的公钥检查可以方便进行自动化任务执行。如果是在shell命令行下进行的自动化任务,建议采用客户端公钥认证,也就是ssh自动登录的方式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。