过去两年,我通过 MySQL Workbench 通过 ssh 隧道与 Ubuntu 14.04 建立了活动连接,没有任何问题。但在 Ubuntu 升级到新的 16.04 后,我一直收到以下错误:
13:41:56 [INF][ SSH tunnel]: Starting tunnel
13:41:56 [INF][ SSH tunnel]: Existing SSH tunnel not found, opening new one
13:42:03 [INF][ SSH tunnel]: Opening SSH tunnel to xxx.xxx.xxx.xxx:22
13:42:03 [INF][ SSH tunnel]: TunnelManager.wait_connection authentication error: Authentication error, unhandled exception caught in tunnel manager, please refer to logs for details
13:42:03 [ERR][ SSH tunnel]: Authentication error opening SSH tunnel: Authentication error, unhandled exception caught in tunnel manager, please refer to logs for details
可能有用的注释:
- 我能够通过 HeidiSQL 通过 ssh 隧道进行连接。
- 我无法通过 Navicat 建立连接并且一直收到
SSH:expected key exchange group packet from server
。
我阅读了很多关于如何解决此问题的资料,其中一些建议如下:
- 在服务器上生成新的 ssh 密钥,
- 添加Kex算法到 sshd_config 的末尾,
- 升级波拉米科工作台 Python 包。
我感谢您提供的任何帮助。
答案1
在检查问题并尝试在其他计算机和成功连接的计算机上重现问题后,我发现该问题是由缓存 ssh 已知主机引起的。
我删除了该文件夹user\application data\roaming\mysql\workbench\ssh\
但问题仍然存在。
最后一次尝试时,我卸载了 MySql Workbench 并删除了前面提到的设置文件夹,然后安装最近下载的 MySql Workbench 版本。幸运的是,一切正常。
答案2
我通过降级 ubuntu 16.04 中的 python-crypto 包解决了这个问题。使用以下命令将版本 2.6.1-6ubuntu0.16.04.2 回滚到 2.6.1-6build1。
sudo apt-get install python-crypto=2.6.1-6build1
參考文獻:https://forums.mysql.com/read.php?152,655178,655194#msg-655194
答案3
在这里找到答案:https://stackoverflow.com/a/26584947/5201045
请使用DEBUG3级别。然后您将看到服务器上配置的密钥交换算法列表以及您的客户端支持的列表。
然后将以下行添加到您的 /etc/ssh/sshd_config:
KexAlgorithms <here comma-separated list of Kex Algorithms configured on your server>,<here one of the Kex Algorithms supported by your client>
例如,OpenSSH 6.7 默认启用以下算法:[电子邮件保护]、ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521、diffie-hellman-group-exchange-sha256、diffie-hellman-group14-sha1。
如果你的客户端仅支持 diffie-hellman-group1-sha1,那么你的 /etc/ssh/sshd_config 应该包含
KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
没关系 - OpenSSH v.6.7 也支持 diffie-hellman-group1-sha1,但默认情况下它是关闭的。您应该通过将 KexAlgorithms 行放入 sshd 配置中来允许 sshd 使用此密钥交换算法。
致谢 Nikolay
附加组件:之后重新启动 ssh 服务
#/etc/init.d/ssh restart