在尝试将文件上传到我们的服务器时,我得到了以下异常
com.jcraft.jsch.JSchException: Auth fail
at com.jcraft.jsch.Session.connect(Session.java:464)
at com.jcraft.jsch.Session.connect(Session.java:158)
at FtpService.transferFileToReciever(FtpService.java:80)
at FtpService.transferFileToReciever(FtpService.java:54)
at FtpService.transferFileToRecievers(FtpService.java:44)
at FtpService.transferSingeFile(FtpService.java:241)
at FtpService.main(FtpService.java:26)
Auth fail
源文件中的函数transferFileToReciever部分是
JSch jsch = new JSch();
jsch.addIdentity("/root/.ssh/id_dsa");
Session session = jsch.getSession(username, host, 22);
session.setUserInfo(serverinfo);
session.connect(); //geting exception here
boolean ptimestamp = true;
密码是工作的,因为我可以做登录使用ssh,但使用JSCh它不工作,即使提供了密钥,用户名和密码。使用java版本为"1.6.0_25“的id_dsa密钥。可能的错误是什么?
找到了其他类似的问题,但没有答案。提前谢谢。
发布于 2013-06-18 14:56:12
追根溯源,我最终发现dsa类型的公钥没有添加到远程服务器上的授权密钥中。添加同样的功能对我来说很有效。
ssh与rsa密钥一起工作,导致我回顾我的代码。
谢谢大家。
发布于 2015-04-29 13:43:19
我还面临着身份验证失败的问题,我的代码的问题是我有
channelSftp.cd("");
它将其更改为
channelSftp.cd(".");
然后它就起作用了。
发布于 2018-04-13 19:36:03
尝试显式添加auth方法,如下所示,因为有时需要:
session.setConfig("PreferredAuthentications", "password");
https://stackoverflow.com/questions/17148948
复制相似问题