com.jcraft.jsch.JSchException: Auth fail


背景

  • 服務器信息:
    服務器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服務報錯: Auth fail


如果您覺得這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到,謝謝!

如果帥氣(美麗)、睿智(聰穎),和我一樣簡單善良的你看到本篇博文中存在問題,請指出,我虛心接受你讓我成長的批評,謝謝閱讀!
祝你今天開心愉快!


歡迎訪問我的csdn博客,我們一同成長!

不管做什么,只要堅持下去就會看到不一樣!在路上,不卑不亢!

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

© 每天都在變得更好的阿飛


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM