【2021-01-14】navicat使用ssh tunnel、密钥方式连接数据库的问题。错误:Unable to load key - unrecognised cipher name
之前一直用Navicat for Mysql 10.1.7版本,一直感觉挺好用。这两天需要用ssh tunnel、密钥方式连接一个远程数据库,对方服务器系统是centos8,结果不行了。
首先选择了私钥文件之后,navicat提示“80070007: SSH Tunnel: Wrong data format”错误。这个私钥文件我在Xshell上面登录的时候是完全没有问题的。
百度百度查了一堆,没有找到什么有关的,好吧只能慢慢试。
看到有人说Navicat版本太低的问题,那先尝试更新Navicat到15。
这时再试又有新问题,选择私钥之后提示“Unable to load key - unrecognised cipher name”。
百度百度查了一堆,和“unrecognised cipher name”有关的查不到什么内容,和“Unable to load key”有关的倒是不少。
大部分是说让人用Putty转一下私钥文件格式,试了一下,没有cipher错误了,但是出了其他错误,对方不认加密格式,遂放弃。
后来找到这条博文navicat 报错: unable to load key
里面提到新版本openssh产生的私钥文件是以“-----BEGIN OPENSSH PRIVATE KEY-----”开头,而老版是以“-----BEGIN RSA PRIVATE KEY-----”开头。我一看,确实。
这下终于解决了,说下解决方法:先找到centos服务器里面原来的私钥文件,然后在服务器里使用这条指令转一下原来那个私钥文件的格式
ssh-keygen -p -N "" -m pem -f /path/to/file
你会发现私钥文件的开头变成RSA那个格式了,再拿这个文件去navicat里面连接,就OK了
吐槽:navicat竟然连这个都还不支持,有点奇怪啊