Ssh

ssh 算法協商失敗

  • September 29, 2016

問題

好的,問題是我在 El Capitan 上使用 Pycharm。我正在嘗試使用比 Pycharm似乎有能力使用的更新的密鑰交換算法連接到具有嚴格登錄 Kexalgorithms 的伺服器……但這裡有一個問題,我可以從終端登錄,並且這個版本Pycharm 在 Ubuntu 14.04 上工作(我可以從那裡登錄)

我可以從終端成功使用 ssh 正常登錄。

當我嘗試使用 Pycharm 登錄伺服器時,我收到錯誤“算法協商失敗。

在此處輸入圖像描述

這是我的 /var/log/messages 中的一個條目

Jan 22 23:15:56 (none) auth.crit sshd[2520]: fatal: Unable to negotiate with 10.10.16.125: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1 [preauth]'

這已在 StackOverflow 上被問過,但該人似乎通過添加選項以允許此非常舊版本的 Diffie-Helman 到伺服器上的 sshd_config 文件來解決問題。

我無權將此 Diffie-Helman 的舊版本添加到 sshd_config

我以前在 Yosemite 上,並且認為升級可以解決這個問題,因為 ssh 和 openssl 版本較新,但這並沒有解決問題。

筆記

  • 在 Ubuntu 14.04 上使用相同版本的 Pycharm,我可以連接。所以看起來Pycharm不是問題。
  • 我能夠從我的 Mac SSH 到伺服器以獲取該條目日誌條目

問題

我是否需要為具有 ssh 功能的應用程序更新特定的 crytpo 相關庫才能使用這些新功能?

我花了一段時間才回到這裡回答我自己的問題。

更新 Jsch 庫

Pycharm 版本 4 包含一個有錯誤的庫。此錯誤阻止使用某些 SSH 密鑰交換算法與基本 Diffie-Helman-group1* 密碼以外的任何東西進行 SFTP 通信。因此,我們需要更新庫以便 Pycharm 與我們的 VM 通信。我們的 VM 只允許使用更現代的密鑰,並阻止傳統的 Diffie-Helman-group1* 密碼。

Pycharm 4 有一個名為 Jsch 的 Java 庫的過時版本,它用於與 SFTP 通信(傳輸幫助文件所需的)。為了解決這個問題,我們只需要更新庫。

更新的庫位於 sourceforge,位於:http: //sourceforge.net/projects/jsch/files/jsch.jar/0.1.53/

受影響的版本

  • Mac:Pycharm <= 5
  • Windows:Pycharm <= 5
  • Linux:Pycharm < 4?(這個bug在linux 4.04中不存在)

下載步驟

  1. 從此頁面(頂部)下載 Jsch 的副本。
  2. 刪除舊版本:jsch-0.1.51.jar sudo rm /Applications/PyCharm.app/Contents/lib/jsch-0.1.51.jar
  3. 複製新的庫pycharm目錄:/Applications/PyCharm.app/Contents/lib cp ~/Downloads/jsch-0.1.53.jar /Applications/PyCharm.app/Contents/lib/。
  4. 重啟 Pycharm

**注意:**這已在 Pycharm 5 中修復,並且更新為我的同事修復了它,但如果您有其他基於 java 的應用程序,這可能會對您有所幫助。

**注意:**我最終通過探勘 Pycharm 的日誌發現了這一點。我可以看到關於庫和一些Google搜尋的問題,後來我在 sourceforge 上找到了庫。

第一:你需要它做什麼?工作不是sshfs更好嗎?

你的問題正好相反。伺服器提供舊的(並且可能損壞的)KeyExchange 方法:diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1,在目前版本的 openssh 伺服器中不再是預設的(那個伺服器是什麼?如果你的系統管理員告訴你它是嚴格更新的,那麼它不是真的),但是應該為客戶工作。

您應該嘗試在~/.ssh/config允許這些 Kex 方法的行中添加:

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1

如果它對應用程序內的連接沒有幫助,可能還有其他方法可以強制使用本地配置。

引用自:https://unix.stackexchange.com/questions/257129