ssh算法协商失败

ssh算法协商失败

问题

好吧,问题是我在 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 功能的应用程序更新特定的 crypto 相关库才能使用这些新功能?

答案1

第一:你需要它做什么?难道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

如果它对应用程序内的连接没有帮助,可能还有其他方法强制使用本地配置。

答案2

我花了一段时间才回到这里回答我自己的问题。

更新 Jsch 库

Pycharm 版本 4 包含一个有错误的库。此错误会阻止使用某些 SSH 密钥交换算法与基本 Diffie-Helman-group1* 密码以外的任何算法进行 SFTP 通信。因此,我们需要更新库以便 Pycharm 能够与我们的虚拟机进行通信。我们的虚拟机仅允许使用更现代的密钥,并阻止传统的 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? (linux上4.04不存在这个bug)

下载步骤

  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 的日志发现了这一点。我可以看到有关该库的问题,并进行了一些谷歌搜索,然后我在 sourceforge 上找到了该库。

相关内容