美文网首页
com.jcraft.jsch.JSchException: A

com.jcraft.jsch.JSchException: A

作者: 阿飞云漫步 | 来源:发表于2018-08-20 21:55 被阅读0次

    背景

    • 服务器信息:
      服务器A:10.102.110.1
      服务器B:10.102.110.2
      需要从服务器A通过Sftp传输文件到服务器B。

    应用项目中有一个功能,要通个关Sftp进行日志文件的传输,在部署的时候,服务器之间已经配置了免认证(密),也就sftp免密登录,但是部署完项目后,启动服务,在需要传输的时候还是报了下面的错误:
    com.jcraft.jsch.JSchException: Auth fail

    14:26:12.704 [pool-1-thread-1] ERROR fileTransfer - connect to server failed:
    com.jcraft.jsch.JSchException: Auth fail
        at com.jcraft.jsch.Session.connect(Session.java:519) ~[jsch-0.1.54.jar:na]
        at com.jcraft.jsch.Session.connect(Session.java:183) ~[jsch-0.1.54.jar:na]
        at com.shop.core.log.transfer.SftpFileTransfer.connect(SftpFileTransfer.java:64) ~[livechat-core-0.0.1-SNAPSHOT.jar:na]
        at com.shop.core.log.transfer.FileTransferExecutor.processFile(FileTransferExecutor.java:96) [livechat-core-0.0.1-SNAPSHOT.jar:na]
        at com.shop.core.log.transfer.FileTransferExecutor.access$000(FileTransferExecutor.java:26) [livechat-core-0.0.1-SNAPSHOT.jar:na]
        at com.shop.core.log.transfer.FileTransferExecutor$1.run(FileTransferExecutor.java:48) [livechat-core-0.0.1-SNAPSHOT.jar:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_67]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [na:1.7.0_67]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_67]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.7.0_67]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
    14:26:12.705 [pool-1-thread-1] ERROR fileTransfer - Connect to 10.102.110.7 failed, cannot transfer data files!
    14:26:22.768 [pool-1-thread-1] ERROR fileTransfer - connect to server failed:
    com.jcraft.jsch.JSchException: Auth fail
        at com.jcraft.jsch.Session.connect(Session.java:519) ~[jsch-0.1.54.jar:na]
        at com.jcraft.jsch.Session.connect(Session.java:183) ~[jsch-0.1.54.jar:na]
        at com.shop.core.log.transfer.SftpFileTransfer.connect(SftpFileTransfer.java:64) ~[livechat-core-0.0.1-SNAPSHOT.jar:na]
        at com.shop.core.log.transfer.FileTransferExecutor.processFile(FileTransferExecutor.java:96) [livechat-core-0.0.1-SNAPSHOT.jar:na]
        at com.shop.core.log.transfer.FileTransferExecutor.access$000(FileTransferExecutor.java:26) [livechat-core-0.0.1-SNAPSHOT.jar:na]
        at com.shop.core.log.transfer.FileTransferExecutor$1.run(FileTransferExecutor.java:48) [livechat-core-0.0.1-SNAPSHOT.jar:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_67]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [na:1.7.0_67]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_67]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.7.0_67]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
    14:26:22.768 [pool-1-thread-1] ERROR fileTransfer - Connect to 10.102.110.7 failed, cannot transfer data files!
    

    解决过程

    1、 检查 配置参数比如用户名和密码等配置错误

    这里就不做过多说明,自己去查看连接sftp的配置时候正确。

    2、查看服务器之间sftp免密登录配置是否OK

    遇到 Auth fail 认证失败,那么第一个要排查的就是 服务器的SSH免密登录配置是否OK,在10.102.110.1 服务器A 通过下面命令:

    ssh shop@10.102.110.2

    • shop : 用户名
    • 10.102.110.2:服务器ip

    输入命令后,不需要输入密码即可连接成功服务器B。那说明免密配置是OK!

    3、检查 配置项PasswordAuthentication

    在/etc/ssh/sshd_config文件夹的一个配置项PasswordAuthentication 默认为no!
    “PasswordAuthentication”设置是否允许口令验证,把它改为yes,重启服务就OK了。

    我查看了10.102.110.2服务器B配置发现也没有问题。PasswordAuthentication配置的就是yes。

    4、看Session.connect 是否设置连接超时

    查看代码发现代码中,connect为默认构造。

    //省略其他代码
    this.sshSession.connect();
    //省略其他代码
    

    看了一下源码,觉得这个连接超时时候要设置,默认是0!
    于是修改为下面代码

    // 设置登陆超时时间,不设置可能会报错
    this.sshSession.connect(1500);
    
    

    重启服务后,发现正常了,可以连接成功了,也报错误了。

    总结

    一个问题的出现,可能的原因会有很多,不能因为问题出现了而乱了手脚,要有排查问题的思路,一步步来,最终问题一定会解决的。

    参考

    基于jsch的SFTP文件上传下载的java工具类
    JSCH连接SFTP服务报错: Auth fail


    如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到,谢谢!

    如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
    祝你今天开心愉快!


    欢迎访问我的csdn博客,我们一同成长!

    不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

    博客首页 : http://blog.csdn.net/u010648555

    © 每天都在变得更好的阿飞

    相关文章

      网友评论

          本文标题:com.jcraft.jsch.JSchException: A

          本文链接:https://www.haomeiwen.com/subject/svjriftx.html