77

我正在尝试使用

sudo npm install

为用 nodejs 编写的应用程序安装我的所有依赖项。我的操作系统是 Ubuntu 13.04

但是,我不断收到此警告:

The authenticity of host 'github.com (192.30.252.131)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:1d:52:13:1a:21:2d:bz:1d:66:a8.
Are you sure you want to continue connecting (yes/no)?

有没有人遇到过这个警告?是否可以在本地验证和存储指纹?因此,当我再次输入 sudo npm install 时,我不需要再次进行身份验证。

现在,我无法输入任何内容,甚至无法输入“是”。我的终端卡住了,我必须按Ctrl+C来终止。

4

10 回答 10

94

前面有危险,除非你真的不关心在本地帐户上与 github 的安全通信

SSH 正确地抱怨他们无法确保您确实通过安全通道连接到 github 的服务器。这可能就是 github 推荐 https 访问的原因,由于其公钥基础设施,它可以开箱即用。

现在,您可以让它工作,但请注意,它涉及缓存公钥指纹,如果操作不正确,则会为攻击者提供永久性的中间人攻击。

如何安全进行?

选项 1 是使用 https url 而不是 ssh。

选项 2 是有 ssh 访问工作。

好的,告诉我选项 2

  1. ssh -T git@github.com,但不要只输入“是”。
  2. 检查显示的哈希值是否与https://help.github.com/articles/what-are-github-s-ssh-key-fingerprints/中显示的哈希值之一匹配(在您的问题中,它确实如此,并查看,出于相同的公钥基础设施原因,该页面是通过 https 获取的)。

如果哈希匹配,那么连接确实是安全的,您可以对 ssh 的问题回答“是”。

好的,我检查并输入了是,我怎么知道它有效?

SSH 将显示如下内容:

警告:将 IP 地址“192.30.252.128”的 RSA 主机密钥永久添加到已知主机列表中。

之后,您将看到如下消息

权限被拒绝(公钥)。

这很好,但表明您需要进一步配置,或者只是

,您的登录!您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。

这意味着一切正常,您可以重试第一次操作。

请注意,如果您重试相同的 ssh 命令,它不应再询问该问题。

于 2016-02-07T22:09:45.197 回答
26

在命令提示符下运行ssh -o StrictHostKeyChecking=no git@github.com以将真实性添加到您的 known_hosts。那么下次你就不会收到提示了。

于 2014-01-05T20:55:22.617 回答
6

您确定您没有意外以其他用户身份登录(当我 sudo -s / login as root 并忘记我的 GitHub 帐户未链接到该用户时,这种情况发生在我身上)。

于 2014-03-11T01:54:09.287 回答
6

我通过运行解决了我的问题

ssh-keyscan github.com >> ~/.ssh/known_hosts

在命令提示符下。此命令将为您的 known_hosts 添加真实性。

于 2021-11-14T06:29:14.793 回答
4

我来到这里是因为我遇到了这个错误并且不明白为什么。原来我的 npm 命令有错字:

npm install -P -E @angular/common @angular/compiler @angular/core @angular/forms 
@angular/platform-browser @angular/router @angular/animations@ angular/platform-browser-dynamic

注意行尾是如何读取的@angular/animations@ angular/platform-browser-dynamic

NPM 将最后一个“包”解释为 github 存储库,这就是错误的来源。

我知道这实际上并没有回答这个问题,但我提出它以防万一其他人遇到类似的错误。

于 2019-04-11T09:52:43.997 回答
2

Github 刚刚更改了他们的 IP 地址基础设施。您可以在此处阅读更多详细信息https://github.com/blog/1606-ip-address-changes。另外,我以前从未见过这样的问题。您的 package.json 是否包含通过 ssh 克隆的 git 依赖项?

试试echo 'yes' | 须藤 npm 安装。这可能会解决您的问题。如果没有,请尝试通过 HTTPS 进行克隆,或者将模块下载为 tarball,可以像这样https://api.github.com/repos/username/reponame/tarball

于 2013-09-10T06:03:21.273 回答
1

如果你有这种类型的问题

The authenticity of host 'github.com (192.30.252.131)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:1d:52:13:1a:21:2d:bz:1d:66:a8.
Are you sure you want to continue connecting (yes/no)?

别担心,请按照以下步骤操作:

步骤1:yes [press enter]

然后你会得到:

Please type 'yes', 'no' or the fingerprint:

第2步:copy fingerprint and paste here [press enter ]

于 2021-01-10T07:53:33.927 回答
0

Stéphane Gourichon的 2016 年回答提到:

ssh -T git@github.com不要只输入 "yes"

检查显示的哈希值是否与“ GitHub 的 SSH 密钥指纹”中显示的哈希值之一匹配。
(在您的问题中确实如此,并且看到,出于相同的公钥基础设施原因,该页面是通过 https 获取的)。

这次以编程方式检查 GitHub 主机密钥是否匹配的另一种方法是使用GitHub API(2022 年 1 月):

GitHub 的 SSH 主机密钥现已在 API 中发布

GitHub 元数据端点 ( api.github.com/meta)现在包含我们的SSH 主机密钥。
(我们还将继续提供主机密钥指纹。)

{
 // new entry
 "ssh_keys": [
   "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl",
   "ecdsa-sha2-nistp256 >AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=",
   "ssh-rsa >AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="
 ],
 // existing entry
 "ssh_key_fingerprints": [
   "SHA256_RSA": "nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8",
   "SHA256_ECDSA": "p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM",
   "SHA256_ED25519": "+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU"
 ],
 // ... rest of payload
}

These keys are in the OpenSSH known_hosts format for easy inclusion into existing known_hosts files.

This will make it easier to preconfigure systems which expect to connect via SSH.

For example, you can prime your CI runners with these keys before starting to fetch from GitHub.

The keys returned from the API include both SSH host keys that we're actively using, plus any that we're advertising via host key rotation for future use.

Currently, we're not offering any keys via rotation that aren't actively in use, but if we announce new host keys in the future, you can find them here as well during the rotation period.

See the [meta API endpoint][6] to learn more.
于 2022-01-20T21:08:54.937 回答
0

我正在使用npm ci,但该package-lock.json文件有很多git+ssh://触发此错误消息的 URL。

基于此处接受的答案,我使用了一个小sed脚本将所有ssh://URL替换为https://URL:

sed -i 's|git+ssh://git@github.com|https://github.com|' ./package-lock.json

我希望这可以帮助一些处于类似情况的人。

这是一个快速的解决方法。更持久的解决方案是修复文件中的 URL,package.json以构建改进的package-lock.json文件。

于 2021-08-04T09:41:11.147 回答
-4

运行ssh github.com并输入yes,它应该会失败。然后再次运行您的命令。如果不重试ssh github.com,因为他们有多个 IP,您可能需要所有这些。

于 2013-09-10T07:22:17.480 回答