環境
服務器:centos6.5
客戶端:Windows
前言
專案中有一個exe,安裝在客戶端,其中有一個功能是將本地產生的檔案上傳至服務器,這個功能是以服務的方式安裝在客戶端上,之前一切好使,檔案能正常上傳到服務器,但最近發現產生的檔案沒有被上傳到服務器,查看檔案上傳服務的事件日志提示密碼錯誤,但是我可以保證服務器的密碼沒人動過,
問題復現
苦尋未果,最后找出工程,啟動除錯,當Tamir.SharpSsh.jsch.Session物件連接目標服務器時,拋出例外了Tamir.SharpSsh.jsch.JSchException:“Algorithm negotiation fail”意思是演算法協商失敗,

到這里突然想起來,前段時間因為漏掃出很多漏洞,其中就有openssh當時順便一起升級了,沒想到給自己埋坑了,升級后加密演算法不一樣了,導致Tamir.SharpSsh.jsch無法連接到服務器,拋出演算法協商失敗的例外,
解決
1、網上很多解決方案,最簡單的就是修改sshd_config檔案,加入一些加密演算法,我試了,行不通,
2、嘗試升級Tamir.SharpSsh.jsch,能找到的版本就是SharpSSH-1.1.1.13,而我專案里參考的就是這個版本,找半天沒找到更高的版本,
3、期間想過把openssh降級,恢復到系統默認安裝的版本,但這個辦法會導致漏掃出漏洞,
4、最終決定棄用Tamir.SharpSsh.jsch改用Renci.SshNet.Sftp,在管理NuGet程式包里直接搜SSH.NET第一個就是,下載安裝參考一氣呵成,

程式稍微的改動下,可以正常連接,并上傳檔案,
end,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/538088.html
標籤:C#
下一篇:篇(19)-Asp.Net Core 入門實戰-權限管理之整理選單導航控制顯示(Partial View和Component View)
