Node.js 主机的真实性';github.com(192.30.252.128)和#x27;can';不能成立

Node.js 主机的真实性';github.com(192.30.252.128)和#x27;can';不能成立,node.js,git,ubuntu,github,ssh-keys,Node.js,Git,Ubuntu,Github,Ssh Keys,我正在尝试使用 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

我正在尝试使用

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安装时,我不需要再次进行身份验证


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

Github刚刚更改了他们的ip地址基础结构。你可以在这里阅读更多细节。而且,我以前从未见过这样的问题。您的package.json是否包含通过ssh克隆的git依赖项


尝试echo“是”| sudo npm安装。这可能会解决你的问题。如果没有,请尝试通过HTTPS进行克隆,或者将模块下载为tarball,方法如下username/reponame/tarball

运行
ssh github.com
,然后键入yes,它应该会失败。然后再次运行您的命令。如果没有,请再次尝试
ssh github.com
,因为它们有多个IP,您可能需要所有IP。

运行
ssh-o StrictHostKeyChecking=nogit@github.com
在命令提示符下为已知主机添加真实性。那么下次您将不会收到提示。

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

我也遇到同样的问题,您只需将SSH密钥添加到SSH代理,请参阅以下链接:

它对我起到了作用。

危险在即,除非您实际上不关心本地帐户上与github的安全通信 Ssh正确地抱怨说,他们无法确保您确实通过安全通道连接到github的服务器。这可能就是github推荐https访问的原因,由于它的公钥基础设施,https访问是开箱即用的

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

如何安全进行? 选项1是使用https url而不是ssh

选项2是让ssh访问工作

好的,让我看看选项2 Do
ssh-Tgit@github.com
但不要只键入“是”。检查显示的散列是否与中显示的散列之一匹配(在您的问题中,确实匹配,请参阅,出于相同的公钥基础结构原因,通过https获取页面)

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

好的,我检查并输入了是的,我怎么知道它工作? Ssh将显示如下内容:

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

之后,您将看到如下消息

权限被拒绝(公钥)

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

嗨,你登录了!您已成功进行身份验证,但GitHub没有 提供shell访问

这意味着所有操作都可以正常运行,您可以重试第一次操作


请注意,如果您重试同一个ssh命令,它将不会再问这个问题。

我在这里登陆,因为我收到了这个错误,但不明白为什么。原来我的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回购,这就是错误的来源


我知道这实际上并没有回答这个问题,但我还是把它放了出来,以防其他人犯类似的错误而遇到这个问题。

如果你有这种类型的问题

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[按enter键]

然后你会得到:

请键入“是”、“否”或指纹:


第二步:
复制指纹并粘贴到这里[按回车键]

一些血腥的shell脚本让我以
root
身份登录,哈哈-谢谢,@matt pavelle严格检查主机密钥是出于安全目的。如果有人能够欺骗github.com(或您尝试连接的任何其他主机)的dns记录,则此警告实际上会捕获欺骗。我建议不要关闭它。同意@payne8:不要禁用严格的主机密钥检查,它将禁用一个重要的安全警告!有关更多信息,请参见答案“”。这看起来与主题无关。问题涉及确保远程方确实是github服务器的问题。您的回答包括向github确保您确实是您声称的注册用户。这是错误和危险的。见下文@payne8的评论。请看我的另一个答案。同意@Stéphane Gourichon的观点,盲目地这样做是危险的,因为它似乎否定了提示的目的。他的答案指向验证散列的URL:(取自他的答案,我肯定是答案,并向上投票),尽管我承认我一直想知道是否有人可以伪造DNS记录,他们是否也可以伪造验证页面。@ibgib谢谢。验证页面提供了更好的防欺骗保护(即,除非用户忽略浏览器警报,这类似于在ssh密钥验证提示下盲目键入“是”)。验证页面通过https进行保护,所有正确使用https的浏览器都有一个可信根证书列表,用于保证github服务器证书是真实的(有关详细信息,包括限制,请参阅)。这并不完美,但欺骗要困难得多。如果您的权限被拒绝(公钥),请转到并添加您的ssh密钥there@urig我提到的页面()有一个到@Surya的链接,如果散列不匹配,它将