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

97

Mac OSX Lion 10.7.

为了解决一些奇怪的环境问题(homebrew无法安装wget,我遇到了各种奇怪的阻塞和错误),我卸载了zschrc、homebrew和其他一些东西,然后安装了fish shell。

现在,每当我尝试从github中push/pull数据时,都会出现以下错误:

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).

所以我尝试检查我的~ / .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

known_hosts文件中只有一个.pem文件,我用它来进行ssh连接(也出现了“authenticity…”提示),连接的是Amazon ec2实例,尽管在情况危急时我曾尝试将id_rsa和id_rsa.pub复制到其中。

你有什么想法吗?我很想解决这个问题,这样每次推送/拉取时就不需要频繁地提示我。

编辑 我之前成功地按照这些说明操作过,所以我的ssh密钥已经存在于Github上,并且被识别,因此当我运行ssh -T git@github.com时,会得到以下结果:

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

看起来只有我的本地计算机对我的ssh情况不满意。


如果有人在这里是因为他们正在尝试连接DigitalOcean的doctl工具,请先使用ssh直接连接IP。 - Jxek
21个回答

2

对于任何感兴趣的人,这个在Ubuntu上对我有效:

  1. Go to .ssh directory.

    $ cd ~/.ssh
    
  2. Remove the known_hosts file.

    $ rm known_hosts
    
  3. Re-push your Git changes.


删除已知主机解决了我的问题。 - stanley mbote
我很高兴它对你起作用了。 - Yves

2

我重新生成了"ssh"密钥,并将其添加到我的git账户中,这对我很有效。

以下是生成"ssh-key"的命令:

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

-> 这将创建一个新的ssh密钥,使用提供的电子邮件作为标签。

Generating public/private rsa key pair.

-> 当提示“输入要保存密钥的文件名”时,请按Enter键。这将接受默认文件位置。

Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]

-> 在提示符下,输入一个安全的密码短语。有关更多信息,请参见“使用SSH密钥口令”

Enter passphrase (empty for no passphrase): [Type a passphrase]

Enter same passphrase again: [Type passphrase again]

-> 您的密钥已生成,要复制密钥:

$ sudo cat /root/.ssh/id_rsa-pub

希望这能解决您的问题!


2

这种情况通常是由于权限不足导致的。我的用户对该文件既没有读取权限也没有写入权限。修复权限即可解决问题。


2
可能是因为known_hosts文件的所有者是另一个用户,即在大多数情况下为root。 您可以访问给定的路径目录(在我的情况下为/home/taimoor/.ssh/known_hosts)并检查root是否是所有者,并将其更改为默认所有者。
示例:
错误描述 - Error Description 更改所有者之前 - Before changing the owner 更改所有者后 - enter image description here

1

"将主机添加到已知主机列表失败"

这也是我的错误。 我试图更改所有者和权限。

然后我看到它尝试写入“〜/ .ssh / known_hosts.d /”

Failed to add the host to the list of known hosts (~/.ssh/known_hosts.d/<hostname>).

如果您也遇到了这种情况,只需创建文件夹:
mkdir ~/.ssh/known_hosts.d
chmod 700 ~/.ssh/known_hosts.d

虽然这并不能解决原帖作者的问题(因为他的系统试图写入“~/.ssh/known_hosts”文件,而不是像“~/.ssh/known_hosts.d/”一样写入systemd目录),但我认为这会帮助搜索相同错误消息的其他用户。

区别在于,当系统尝试写入known_hosts文件时,所有主机数据将包含在其中。而在目录中,它将为该目录中的每个主机创建一个文件。

有关此类目录的更多信息,请参见-> https://askubuntu.com/questions/7648/many-directories-have-a-d-suffix-extension-what-does-it-mean


您的回答可以通过解释为什么这个方法解决了原帖的问题而得到改进。 - lmonninger
1
@lmonninger 希望这次编辑是你所期望的改进,不过现在每个人都应该能够编辑它了。(希望我没有误解那个“社区维基”复选框...) - Silver Sky

1

我遇到了这个问题,并发现在~/.ssh/config文件中有一行内容:

UserKnownHostsFile=/home/.ssh-agent/known_hosts

我刚刚修改了这一行,使其读作:

UserKnownHostsFile=~/.ssh/known_hosts

这对我解决了问题。

0

这个东西对我有用

这是GitHub的官方链接,你需要通过运行以下命令来删除旧密钥

$ ssh-keygen -R github.com

或者在终端中运行以下命令,自动更新GitHub.com的RSA SSH密钥到您的~/.ssh/known_hosts文件中:

$ ssh-keygen -R github.com
$ curl -L https://api.github.com/meta | jq -r '.ssh_keys | .[]' | sed -e 's/^/github.com /' >> ~/.ssh/known_hosts

0

检查文件的权限,如果正确,请检查父目录

我不得不进行更正

/home/sravindr/.ssh 权限对我有用


0

当我尝试以下命令时,它与我一起工作

sudo chown $my_user .ssh/id_rsa
sudo chown $my_user .ssh/id_rsa.pub
sudo chown $my_user .ssh/known_hosts

-1

这个命令对我有效,

sudo chmod +x ~/.ssh/known_hosts 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接