问题出现的环境:
系统及版本:Ubuntu 16.04LTS
MySQL Workbench版本:V6.3.8及以上版本
错误信息:
Could not connect the SSH Tunnel
Authentication error, unhandled exception caught in in
tunnel manager, please refer to logs for details
问题出现的场景:
在MySQL Workbench下通过SSH隧道及SSH私钥文件认证来连接远程数据库,出错。
问题出现的可能原因:
当时对系统及MySQL Workbench同时作了升级操作。
解决问题:
解决过程略为复杂。
通过查看Workbench的运行日志,找到异常信息如下:
[ERR][sshtunnel.py:notify_exception_error:234]: Traceback (most recent call last):
File "/usr/share/mysql-workbench/sshtunnel.py", line 302, in _connect_ssh
look_for_keys=True)
File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 325, in connect
t.start_client()
File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 492, in start_client
raise e
ValueError: CTR mode needs counter parameter, not IV
最终定位到与python第三方包python-paramiko有关。paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
之前未接触过paramiko包,所以我选择Surfing on the internet, 搜索了一下,最后注意到有网友和我碰到的问题几乎是一样,只不过他的问题发生2014年,环境也比我的老。
最终我找到了这样一个回复 :
[12 May 2016 11:35] Marcin Szalowicz
MySQL Workbench 6.3.7 will come with Paramiko 1.16.0 that has got support for more Ciphers.
In any case you can always try to use the latest Paramiko version which is described here:
根据提示,发现原来官方是有解决方案的。只不过没有那么直接。
直接说解决步骤吧:
1.去网页https://github.com/paramiko/paramiko/releases下载最新的paramiko包最新的2.1.1版本并解压tar -xvf
2.用sudo apt-get --purge remove python-paramiko彻底清除旧版本的paramiko
3.进入解压好的paramiko路径并使用sudo python setup.py install来安装paramiko
4.注意:安装的过程中下载相关依赖包时可能会出现404,没关系我们可以去http://packages.ubuntu.com/zh-cn/xenial/amd64/libzip4/download中搜索并下载需 要的依赖包并利用sudo dpkg -i 来手动安装。
5.安装完成后,重装Mysql Workbench就可以正常使用了。