“com.jcraft.jsch.JSchException: Auth fail”与工作密码

2022-09-01 10:44:34

在尝试将文件上传到我们的服务器时,我收到以下异常

    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

函数传输文件到从源文件接收的部分是

        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密钥。可能是什么错误?

找到了其他类似的问题,但不是答案。提前致谢。


答案 1

跟踪根本原因,我最终发现dsa类型的公钥没有添加到远程服务器上的授权密钥中。附加相同的内容对我有用。

ssh 使用 rsa 键,导致我在代码中回头看。

谢谢大家。


答案 2

尝试按如下方式显式添加身份验证方法,因为有时它是必需的:

session.setConfig("PreferredAuthentications", "password");

推荐