ssh验证下的公钥改变问题
小编在使用本地的MySQL的workbench进行远程服务器数据库连接时,遇到了登录验证问题,workbench弹窗显示服务器公钥发生更改(错误:The server key has changed. Either you are under attack or the administrator changed the key.)。
但是小编在前几天做远程连接时并未出现问题,便回想这几天对服务器做了系统重装操作,MySQL也重新做了配置,而Linux的登录名和登录密码和重装前的一致,远程数据库登录名与密码也没有做更改。由于第一次遇到这种问题,也没有意识到公钥和登录密码其实不是同一个东西,预先想着是不是服务器端的Linux环境下MySQL配置出现问题,过后又确认了服务器的登录名和登录密码没有变化,在这一系列下的检查后,问题依旧没有得到改变。同时很疑惑的是,Xshell和Xftp两个连接服务器的软件在Linux系统重装后的连接并没有受到影响,可能是Xshell和workbench用的公钥文件不是同一个?(猜的)
网络上显示的解决方案都是删除本地存储的旧的服务器公钥,但是workbench的弹窗提示并没有显示关于这个公钥文件的有关信息,也没有相关路径信息,因而找不到相关的公钥文件。
可能可行的解决方案
在一次偶然尝试下,用window下cmd的ssh命令进行连接,命令如下:ssh 服务器账户名(默认是root)@服务器的公网IP。结果不出意外的显示了服务器公钥发生改变的信息,但同时又显示了本地存储公钥文件的路径信息以及发生错误的行数:C:\Users\dell.ssh\known_hosts:1。这样下来我们就找到了存储公钥的文件,根据文件路径打开known_hosts文件,删除发生错误的行(这里显示错误的行数为第一行,根据实际情况而定),可以看到第一行存储了服务器的IP地址以及公钥数据,更改公钥文件后保存,重新在workbench进行远程数据库连接,出现弹窗提示是否接受该服务器的公钥,接受并输入密码后,终于成功连接。
小编的第一次写作,如有错请多多指教。