返回

Git推送时提示“服务器主机密钥未缓存”,如何解决?

windows

解决 "git - Server host key not cached" 错误

简介

在使用 Git 将本地仓库的更改推送到远程仓库时,你可能会遇到 "The server's host key is not cached in the registry" 错误。这表明 Git 无法验证远程服务器的身份。本文将提供循序渐进的步骤来解决此错误,并提供在特定情况下可能有帮助的额外提示。

解决步骤

检查 SSH 密钥

首先,确保你已生成 SSH 密钥并将其添加到 SSH 代理中。如果没有,请运行以下命令:

ssh-keygen -t rsa -b 4096
ssh-add ~/.ssh/id_rsa

添加远程服务器的主机密钥

接下来,使用以下命令将远程服务器的主机密钥添加到 known_hosts 文件:

ssh-keyscan -H hostname >> ~/.ssh/known_hosts

其中 "hostname" 是远程服务器的名称或 IP 地址。

再次尝试推送

完成这些步骤后,再次尝试推送更改:

git push origin

解决 Windows 中的权限问题

在 Windows 中,你可能需要授予 Git 在正确路径下创建 ~/.ssh 目录的权限。为此,右键单击 Git Bash 图标,选择 "以管理员身份运行"。

其他提示

  • 检查远程仓库的 URL 是否正确。
  • 尝试使用不同的 SSH 客户端,例如 PuTTY 或 OpenSSH。
  • 联系远程服务器的管理员,了解是否存在防火墙或其他限制。

解决 "Could not create directory" 错误

该错误表明 Git 无法在正确的路径下创建 ~/.ssh 目录。这是因为 Windows 中的路径格式与 Linux 中不同。

解决步骤

修改环境变量

编辑系统环境变量并添加或修改以下条目:

HOME=%USERPROFILE%

重启 Git Bash

关闭并重新启动 Git Bash。

结论

遵循这些步骤应该可以解决 "git - Server host key not cached" 错误。如果你仍然遇到问题,请参考本文中的附加提示,或者寻求在线社区或技术支持专家的帮助。

常见问题解答

  1. 为什么我需要添加远程服务器的主机密钥?
    添加主机密钥有助于确保你正在连接到预期的服务器,而不是试图冒充该服务器的恶意实体。

  2. 我可以在哪里找到 SSH 密钥?
    SSH 密钥通常存储在 ~/.ssh 目录中。

  3. 我需要创建多个 SSH 密钥吗?
    通常不需要为每个远程服务器创建单独的 SSH 密钥。一个密钥可以用于连接到多个服务器。

  4. 我可以在 Windows 和 Linux 中使用相同的 SSH 密钥吗?
    是的,SSH 密钥是跨平台的。

  5. 如果我仍然遇到问题该怎么办?
    请寻求在线社区或技术支持专家的帮助。他们可以提供进一步的指导并帮助你解决特定问题。