【问题标题】:The authenticity of host can't be established无法确定主机的真实性
【发布时间】:2012-07-12 00:57:12
【问题描述】:

我第一次做git pull,在git中提示无法建立主机的真实性,与我生成的私钥相比,RSA密钥指纹不正确。我只是想知道如何更新它以便它读取正确的文件,为什么它首先读取错误的指纹?

【问题讨论】:

  • 第一次通过 SSH 联系远程主机是正常的。只需说“是”并继续。
  • 嗯,好的,当我说是时,我得到了权限被拒绝(公钥)?
  • 请参阅stackoverflow.com/questions/2643502/… 和许多类似的问题(链接在右侧的“相关”列中)。
  • 老问题,但无论如何:另见github docs

标签: git ssh


【解决方案1】:

我遇到了类似的问题,这意味着远程主机未知/不受信任。解决方法是在 known_hosts 文件中包含远程主机条目。

这就是我所做的:

  1. 生成(或使用现有的)RSA 密钥并将它们存储在<USER.HOME>/.ssh 文件中。如果您使用的是 eclipse,您可以使用 Preferences 生成 RSA 密钥;

    • 常规 -> 网络连接 -> SSH2,然后选择密钥管理。
    • 现在点击Generate RSA Key...
    • 然后在 .ssh 文件夹中Save Private Key...
  2. 现在您的<USER.HOME>/.ssh 将包含文件;私钥、公钥和known_hosts

  3. 与您信任的主机共享您的公钥。
  4. 打开 Git Bash Promp(命令提示符)并输入以下命令。
    • ssh -vt <user>@<hostname>
    • 例如:ssh -vt git@mygithub.com
  5. 当它提示错误时...您确定要继续连接(是/否)?
  6. 说“是”
  7. 现在您的远程主机已添加到 known_hosts
  8. 完成。

现在,如果您尝试将文件推送到远程,您不会看到任何错误。

【讨论】:

  • 不适用于 git lab,bitbucket 比 git lab 好很多。
  • 如果您没有自动填充 known_hosts 文件,请参阅 superuser.com/a/1111974/1192848,使用 ssh-keyscan -t rsa -H gitlab.com >> C:\Users\USERNAME\.ssh\known_hosts,(此处以 Windows PowerShell 为例,但同样的方法适用于 Linux)。
【解决方案2】:

将 ssh 密钥添加到 GitLab 后,当您尝试克隆存储库时,如果直接按 enter,则会出现以下错误:

Cloning into 'hfe-insure-m'...
The authenticity of host 'git.zhonganinfo.com (100.112.23.182)' can't be established.
ECDSA key fingerprint is SHA256:IRLOr2bTvVB2rLgYVgyUibE+oLlZ0pUwU9wycc/5zYU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

当你看到下面这句话时,一定要输入yes,不要直接按enter

您确定要继续连接(是/否/[指纹])?是的

例如

Cloning into 'hfe-insure-m'...
The authenticity of host 'git.zhonganinfo.com (100.112.23.182)' can't be established.
ECDSA key fingerprint is SHA256:IRLOr2bTvVB2rLgYVgyUibE+oLlZ0pUwU9wycc/5zYU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'git.zhonganinfo.com,100.112.23.182' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 31607, done.
remote: Counting objects: 100% (31607/31607), done.
remote: Compressing objects: 100% (10365/10365), done.
remote: Total 31607 (delta 20695), reused 31485 (delta 20604)
Receiving objects: 100% (31607/31607), 21.51 MiB | 581.00 KiB/s, done.
Resolving deltas: 100% (20695/20695), done.

【讨论】:

    【解决方案3】:

    我在 Ubuntu 中遇到了同样的问题。只需更改权限并为 ssh-keys 启用它

    【讨论】:

    • 我已经通过启用 ssh-keys 解决了这个问题。如附图所示
    【解决方案4】:

    在不妨碍真实性的情况下对问题的一个非常简单的答案是在它提出问题时

    您确定要继续连接(是/否/[指纹])? 只需从 SHA256 复制字符串:// 此处显示的字符串。并将其粘贴为问题的答案。

    希望它也能为大家解决错误。

    【讨论】:

      【解决方案5】:

      我遇到的另一个问题是known_hosts 文件和known_hosts2 文件中有多个条目。

      我唯一的猜测是,由于我在 ./ssh/config 中重用了一个主机名来指向不同的 IP,所以它混淆了创建的多个条目。

      【讨论】:

        【解决方案6】:

        这里有一个更好的答案:

        http://stackoverflow.com/questions/2643502/git-permission-denied-publickey

        这救了我!!!

        这些命令仅在 git bash 提示符下有效。对于 Windows,您很可能需要位于 c:/users//.ssh 目录中。并将您的密钥命名为“is_rsa”。密码是可选的,如果您提供,每次拉取时都会提示您输入密码。

        祝你好运。

        【讨论】:

          猜你喜欢
          • 2013-09-13
          • 1970-01-01
          • 1970-01-01
          • 2019-08-28
          • 2011-04-09
          • 2022-12-06
          • 2016-08-09
          • 2020-06-03
          • 2023-04-01
          相关资源
          最近更新 更多