Navicat 无法识别 Mac 上的 known_hosts 文件中的新条目,并且无法连接到远程服务器
Navicat doesn't recognize new entries in known_hosts file on Mac and cannot connect to remote server
2022 年 2 月更新:此问题可能已在更新的版本中得到修复。查看已接受解决方案的评论。
总结:
与 Navicat 中远程数据库的现有连接正在使用 SSH > 主机字段的域名。在构建新的远程服务器并将域指向新的 IP 地址(并设置数据库和用户,以及将 public RSA 密钥添加到新服务器)之后,Navicat 不信任密钥哈希从服务器。替换 ~/.ssh/known_hosts
中的条目没有帮助。
重现步骤:
- 将远程数据库的域指向新的 IP 地址
- 将您的 RSA public 密钥添加到远程服务器上的授权密钥中
- 在远程服务器上添加远程数据库和用户
- 在终端中,使用域通过 ssh 连接到新的远程服务器,然后按照提示将新服务器添加到 known_hosts 文件
- 在 Navicat(特别是 Navicat Essentials for PostGreSQL,但此问题将适用于 Mac 上 Navicat 套件中的任何应用程序)编辑与远程服务器的现有连接
- 在“编辑连接...”的 SSH 选项卡上 window,单击 'Test Connection'
预计:
- Navicat 使用更新后的 ~/.ssh/known_hosts 文件来授权连接到远程服务器
实际:
- Navicat 连接失败
错误:
The server key has changed. Either you are under attack or the administrator changed the key.
New server key hash:...
问题:
如何让 Navicat 接受新的 known_hosts 数据并授权连接?
问题:
Navicat 使用与操作系统不同的 known_hosts 文件。所以更新 ~/.ssh/known_hosts 不会影响 Navicat 与远程服务器的连接。
解决方案:
- 可选的解决方法:
- 在 Navicat 中,编辑数据库连接
- 在 SSH 选项卡上,将主机字段从域更改为新的 IP 地址
- 修复:
- 在终端中,运行
sudo find ~ -name known_hosts
- 结果将包括类似的内容(以 Navicat Essentials for PostgreSQL 为例):
/Users/<user>/Library/Containers/com.prect.NavicatEssentialsForPostgreSQL12/Data/.ssh/known_hosts
- 编辑该文件并删除以远程服务器的域开头的行
- return 到 Navicat 并再次点击测试连接。连接应该有效。
- 如果您看到错误:
Access denied for 'publickey'. Authentication that can continue: publickey,password (101203)
或类似错误,请检查身份验证方法 selection,如果您使用的是 'Public Key' 或 'Password and Public Key',请单击'Private Key' 文件导航器并重新 select 与您添加到远程服务器的 public 密钥匹配的私钥之一。
2022 年 2 月更新:此问题可能已在更新的版本中得到修复。查看已接受解决方案的评论。
总结:
与 Navicat 中远程数据库的现有连接正在使用 SSH > 主机字段的域名。在构建新的远程服务器并将域指向新的 IP 地址(并设置数据库和用户,以及将 public RSA 密钥添加到新服务器)之后,Navicat 不信任密钥哈希从服务器。替换 ~/.ssh/known_hosts
中的条目没有帮助。
重现步骤:
- 将远程数据库的域指向新的 IP 地址
- 将您的 RSA public 密钥添加到远程服务器上的授权密钥中
- 在远程服务器上添加远程数据库和用户
- 在终端中,使用域通过 ssh 连接到新的远程服务器,然后按照提示将新服务器添加到 known_hosts 文件
- 在 Navicat(特别是 Navicat Essentials for PostGreSQL,但此问题将适用于 Mac 上 Navicat 套件中的任何应用程序)编辑与远程服务器的现有连接
- 在“编辑连接...”的 SSH 选项卡上 window,单击 'Test Connection'
预计:
- Navicat 使用更新后的 ~/.ssh/known_hosts 文件来授权连接到远程服务器
实际:
- Navicat 连接失败
错误:
The server key has changed. Either you are under attack or the administrator changed the key.
New server key hash:...
问题:
如何让 Navicat 接受新的 known_hosts 数据并授权连接?
问题:
Navicat 使用与操作系统不同的 known_hosts 文件。所以更新 ~/.ssh/known_hosts 不会影响 Navicat 与远程服务器的连接。
解决方案:
- 可选的解决方法:
- 在 Navicat 中,编辑数据库连接
- 在 SSH 选项卡上,将主机字段从域更改为新的 IP 地址
- 修复:
- 在终端中,运行
sudo find ~ -name known_hosts
- 结果将包括类似的内容(以 Navicat Essentials for PostgreSQL 为例):
/Users/<user>/Library/Containers/com.prect.NavicatEssentialsForPostgreSQL12/Data/.ssh/known_hosts
- 编辑该文件并删除以远程服务器的域开头的行
- return 到 Navicat 并再次点击测试连接。连接应该有效。
- 如果您看到错误:
Access denied for 'publickey'. Authentication that can continue: publickey,password (101203)
或类似错误,请检查身份验证方法 selection,如果您使用的是 'Public Key' 或 'Password and Public Key',请单击'Private Key' 文件导航器并重新 select 与您添加到远程服务器的 public 密钥匹配的私钥之一。
- 在终端中,运行