【问题标题】:Error "The authenticity of host 'github.com' can't be established. RSA key fingerprint "错误\“无法确定主机\'github.com\'的真实性。RSA 密钥指纹\”
【发布时间】:2022-12-06 22:53:33
【问题描述】:

我在工作中使用我的项目,但我想在家里与他一起工作,因为我可以登录到我的家用机器来处理我的项目。

但是,在家里,我看到以下消息:

The authenticity of host 'github.com (ip)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

我怎样才能克服它?

【问题讨论】:

    标签: github fingerprint


    【解决方案1】:

    你应该只需能够回答“是”,这将更新您的~/.ssh/known_hosts 文件。


    为了避免任何MITM (Man-In-The-Middle) attack,更好的方法是(如Mamsdscommented below)首先验证Github的公钥(参见“GitHub's SSH key fingerprints”),并且,如果你找到一个匹配项,然后你可以回答“是”。

    例子:

    ssh-keyscan -t ecdsa github.com 2>&1 |ssh-keygen -lf -
    256 SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM github.com (ECDSA)
    

    之后,您可以使用 GitHub SSH URL(前提是您有 generated the SSH public/private keys,并将公共地址注册到您的 GitHub 配置文件)

    注意:ssh 密钥生成应该使用 base64 旧 PEM 格式(选项-m PEM),而不是新的当前 70 个字符的 OpenSSH 格式。
    参见“What is the correct format for private key in Credentials”:

    ssh-keygen -m PEM -t rsa -P "" -f afile
    

    那或者你可以switch to an HTTPS URL

    【讨论】:

    • 如果您只是回答是,我认为您应该添加一个关于 MITM 攻击的警告。更好的方法应该是首先验证 Github 的公钥(来自这里:https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints),如果找到匹配项,则可以回答是。
    • @Mamsds 非常好,谢谢。我已将您的评论包含在答案中以提高可见度。
    • 好吧……npm install 以 xx:xx:xx 格式向我展示了一个 ECDSA 密钥指纹……但是上面的链接给了我一个不同的格式,所以我无法判断它是否匹配!
    • @Michael 我不使用npm 来获取密钥指纹。只有ssh-keyscan -t ecdsa github.com 2>&1 |ssh-keygen -lf -。正如预期的那样,它会返回 256 SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM github.com (ECDSA)
    【解决方案2】:

    当您第一次尝试使用 SSH 连接到 Github 时(~/.ssh/known_hosts 中尚无 Github 条目),系统会要求您验证远程主机的密钥指纹。因为,如果入侵者主机将自己表示为 Github 服务器,那么它的 RSA 指纹将不同于 GitHub 服务器指纹。

    你有两个选择。

    1. 考虑到您不关心远程主机(在本例中为 Github)的真实性,您可以接受,或者,

    2. 您可以验证您是否确实连接到 Github 服务器,方法是将您呈现给您的 RSA 指纹(在提示中)与 GitHub's SSH key fingerprintsbase64 格式匹配。

      后一种选择通常更可取。

    【讨论】:

    • 那么为什么网页以 base 64 显示它们,但我被要求从 npm install 进行比较的关键是由冒号分隔的十六进制数字对序列?我怎么知道它们是否相等?
    【解决方案3】:

    只需通过这种方式将 Github 指纹添加到已知主机:

    mkdir -p ~/.ssh
    ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
    

    【讨论】:

    • 我还必须创建文件夹mkdir ~/.ssh
    【解决方案4】:

    使用以下两种解决方案之一:

    1)设置SSH密钥

    按照this GitHub 帮助页面上讨论的步骤进行操作。

    https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh

    2) 使用带有 HTTPS 的 git 克隆

    在您要克隆存储库的机器上的终端中键入(复制/粘贴)以下命令

    git config --global url."https://github.com/".insteadOf git@github.com:
    git config --global url."https://".insteadOf git://
    

    您可以使用以下命令还原此更改

    git config --global url."git@github.com:".insteadOf https://github.com/
    git config --global url."git://".insteadOf https://
    

    【讨论】:

    • 为什么是 --global 而不是 --local
    • 此外,此命令不会真正切换配置,但每次调用都会将一个附加到配置。
    【解决方案5】:

    尝试以下步骤:

    打开 Git Bash

    检查现有的 SSH 密钥:

    $ ls -al ~/.ssh

    如果您已经拥有它们,您将看到:

    • id_rsa.pub
    • id_ecdsa.pub
    • id_ed25519.pub

    如果不这样做,请生成一个(按 Enter 接受默认文件位置):

    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    将密钥复制到剪贴板:

    $ clip < ~/.ssh/id_rsa.pub

    转到您在 Github/Settings/SSH and GPG keys/New SSH key 上的帐户

    将您的密钥粘贴到那里

    接下来,键入:

    $ git remote

    如果您看到原点,请将其删除:

    $ git remote remove origin

    继续执行 GitHub 存储库页面上提供的最后 2 个步骤...

    $ git remote add origin git@github.com:USERNAME/REPONAME.git

    $ git push -u origin master

    刷新您的 GitHub 存储库页面

    瞧!

    【讨论】:

    【解决方案6】:

    1- 创建 SSH 密钥

    如果您没有 ssh 密钥,请像这样创建它:

    ssh-keygen -t rsa -b 4096 -C "youremail@example.com"
    

    2- 检查您的 SSH 密钥

    为此,请转到您的文件夹 ssh,例如:

    cd ~/.ssh
    

    之后,运行此命令行:ls

    如果你有文件:id_rsa,id_rsa.pub所以一切都很好

    现在你需要复制你的id_rsa.pub! (⚠️ 不是 id_rsa) 为此运行cat id_rsa.pub并复制结果

    3- Github / Gitlab

    1. 转到你的 github / gitlab。

    2. 按照您的主机的步骤操作:

      • 知乎: 点击你的轮廓->设置->SSH 和 GPG 密钥->新的 SSH 密钥
      • GitLab: 点击你的轮廓->优先->SSH 密钥
      1. 过去你的id_rsa.pub你已经复制了!

      4- 如果你已经做了但它已经不起作用了??

      当你在 github / gitlab 中输入你的 ssh-key 时,你的密钥有一个截止日期所以你只需要改变它

      那它!祝你工作愉快?

    【讨论】:

    • 这就是答案。此外,如果您更改了密钥的名称,只需运行ssh-add xxx,其中xxx 是您的新密钥名称。
    【解决方案7】:

    你只需要输入yes就可以了,更多信息你可以参考Official Github documentation。这将给出一个输出说

    Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
    

    【讨论】:

    • 可能 op 需要自动发生这种情况
    猜你喜欢
    • 2018-05-22
    • 2021-02-13
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多