无法将主机添加到已知主机列表中

Sas*_*sha 50 permissions ssh terminal github ssh-keys

Mac OSX Lion 10.7.

为了解决奇怪的环境问题(自制软件没有安装wget,我有各种奇怪的块和错误),我卸载了zschrc和homebrew以及其他一些东西,然后安装了fish shell.

现在,每当我尝试向/从github推送/拉出时,我都会收到此错误:

The authenticity of host 'github.com (204.232.175.90)' can't be established.
RSA key fingerprint is <string of colon-separated chars that I should probs keep private>.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/Users/sasha/.ssh/known_hosts).
Run Code Online (Sandbox Code Playgroud)

所以我试着检查我的〜./ ssh文件夹的权限,并得到了这个,这对我来说很好看:

-rw-r--r--  1 sasha  staff    97B Jul  9 22:56 config
-rw-------  1 sasha  staff   1.7K May 16  2012 id_rsa
-rw-r--r--  1 sasha  staff   403B May 16  2012 id_rsa.pub
drwx------  5 sasha  staff   170B Jul 15 09:56 known_hosts
Run Code Online (Sandbox Code Playgroud)

在known_hosts中的所有内容都是我用于ssh'ing(也带有"真实性......"提示)的pem文件到Amazon ec2实例,尽管当事情变得绝望时我尝试复制id_rsa和id_rsa.pub.

知道发生了什么事吗?我想解决这个问题所以我不会多次提示/拉动.

编辑我刚才成功地遵循了这些说明,所以我在Github上有我的ssh密钥,并且它们被识别,所以当我运行ssh -T git@github.com时,我得到了

Hi sashafklein! You've successfully authenticated, but GitHub does not provide shell access.
Run Code Online (Sandbox Code Playgroud)

它似乎完全是我的本地计算机,对我的ssh情况不满意.

ken*_*orb 111

In your specific case, your known_hosts is a folder, so you need to remove it first.

For other people which experiencing similar issue, please check the right permission to your ~/ssh/known_hosts as it may be owned by different user (e.g. root). So you may try to run:

sudo chown -v $USER ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

to fix it.

  • 仍然出现错误:`无法将主机添加到已知主机列表(/Users/igorganapolsky/.ssh/known_hosts). (4认同)
  • 不要忘记他的主目录和.ssh目录还必须具有正确的权限(仅对用户具有读取,写入和执行权限) (2认同)

Kin*_*ngz 25

对于Ubuntu上的人,如果你收到这个错误:

无法将主机添加到已知主机列表中

然后只需删除该known_hosts文件,然后重新运行您的ssh.这将known_host使用适当的权限重新生成文件,并将您尝试ssh的远程主机添加到此文件中.

  • 如何重新运行我的 ssh? (2认同)

Pet*_*etz 20

我认为通过删除〜/ .ssh/known_hosts(这是一个文件夹,而不是文件)来解决OP的问题.但对于可能遇到此问题的其他人,我注意到我的一台服务器拥有奇怪的权限(400):

-r--------. 1 user user 396 Jan 7 11:12 /home/user/.ssh/known_hosts

所以我通过添加所有者/用户PLUS写来解决这个问题.

chmod u+w ~/.ssh/known_hosts

从而.〜/ .ssh/known_hosts需要是一个平面文件,并且必须由您拥有,并且您需要能够读取和写入它.

您可以随时声明known_hosts破产,删除它,并继续正常工作,连接到事物(git/ssh)将重新生成一个应该正常工作的新的known_hosts.

  • 在我的系统中(恢复后),该文件由root拥有...`chown user.user~/.ssh/known_hosts`修复了该问题. (2认同)

CXJ*_*CXJ 18

不应该known_hosts是一个平面文件,而不是一个目录?

如果那不是问题,那么Github上的这个页面可能会有所帮助.尝试使用带有-v或-vv标志的SSH来查看详细的错误消息.它可能会让你更好地了解失败的原因.


小智 8

这个命令对我有用,

sudo chown -v $USER ~/.ssh/known_hosts

如@kenorb所述.

该错误是由于当前用户的权限中断而导致的.


Sto*_*gle 8

这是我需要的解决方案。

sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/*
sudo chown -R ${USER} ~/.ssh/
sudo chgrp -R ${USER} ~/.ssh/
Run Code Online (Sandbox Code Playgroud)

  • 我只是尝试使用 2 个第一个命令,它起作用了,谢谢。 (4认同)

Sar*_*rya 7

好的,理想的权限如下所示
对于ssh目录(您可以通过输入来获得此 权限ls -ld ~/.ssh/
drwx------ 2 oroborus oroborus 4096 Nov 28 12:05 /home/oroborus/.ssh/

d表示目录,rwx表示用户oroborus具有读写权限。这里的oroborus是我的计算机名称,您可以通过回显$ USER来找到您的计算机。第二个腹球实际上是该群。您可以在此处详细了解每个字段的含义。了解这一点非常重要,因为如果您正在使用ubuntu / osx或任何Linux发行版,那么您将再次遇到它。

现在,让您的权限看起来像这样,您需要输入
sudo chmod 700 ~/.ssh

二进制中的7是111,这意味着读1写1和执行1,您可以通过类似的逻辑解码6意味着只有读写权限

您已授予用户读取和执行权限。确保您的文件权限如下所示。

total 20
-rw------- 1 oroborus oroborus  418 Nov  8  2014 authorized_keys
-rw------- 1 oroborus oroborus   34 Oct 19 14:25 config
-rw------- 1 oroborus oroborus 1679 Nov 15  2015 id_rsa
-rw------- 1 oroborus oroborus  418 Nov 15  2015 id_rsa.pub
-rw-r--r-- 1 oroborus root      222 Nov 28 12:12 known_hosts
Run Code Online (Sandbox Code Playgroud)

您已在此处向您的用户授予了所有文件的读写权限。您可以输入以下内容查看ls -l ~/.ssh/

发生此问题的原因是ssh是一个程序正在尝试写入其文件夹中名为known_hosts的文件。在写入时,如果知道它没有足够的权限,它将不会写入该文件,因此会失败。这是我对问题的理解,知识渊博的人可以在此方面做更多的阐述。希望能帮助到你


Rus*_*ell 5

以防万一其他人遇到此错误消息,并且 .ssh 和 .ssh/known_hosts 上的权限看起来不错。

我的问题是我已经从 snap 安装了 gh,并且 snap 应用程序对文件系统的访问受到限制,并且显然无法访问 .ssh。解决办法就是把snap安装去掉,从apt安装。

  • 这个问题仍然存在:&lt; (2认同)