2013-07-16 139 views
33

Mac OSX Lion 10.7。为了解决奇怪的环境问题(自制程序没有安装wget,我有各种奇怪的块和错误),我卸载了zschrc和自制软件以及其他一些东西,然后安装了鱼壳。未能将主机添加到已知主机列表

现在,每当我试图推/拉/从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). 

于是,我就检查我的〜/ 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里面是我用ssh'ing一个PEM文件(也与“真实性...”提示)到Amazon EC2实例,虽然我试图复制id_rsa和当事情变得绝望时,id_rsa.pub在那里。

任何想法是怎么回事?我很想解决这个问题,所以我不会提示我多次推/拉。

编辑我跟着these instructions成功前一阵子,所以我有在Github上我的SSH密钥,并且他们的认可,所以,当我运行SSH -T [email protected],我得到

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

这似乎是我的独家本地计算机这是不满意我的SSH的情况。

回答

14

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

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

+0

奇怪。我想我一定把它变成了一个目录,尽管我不记得什么时候。移动/重命名它修复了一切。谢谢! – Sasha

77

在您的具体情况下,您的known_hosts是一个文件夹,因此您需要先将其删除。

对于其他遇到类似问题的人,请检查您的~/ssh/known_hosts的权限,因为它可能属于不同的用户(例如root)。所以你可以尝试运行:

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

来解决它。

+3

仍然出现错误:'无法将主机添加到已知主机列表中(/Users/igorganapolsky/.ssh/known_hosts).' –

+0

如果还有人将组更改为$ USER或将'-rw-r -r - 1 $ USER root'? – Suncatcher

+0

@Suncatcher集团应该不重要我认为,但你可以尝试。 – kenorb

22

有关Ubuntu的人,如果你得到这个错误:

Failed to add the host to the list of known hosts

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

+0

如何重新运行我的ssh? – Maviles

+0

也适用于OSX。 – Pimentoso

10

我认为OP的问题是通过删除〜/ .ssh/known_hosts(这是一个文件夹,而不是文件)来解决的。但对于谁可能有这个问题其他的,我发现我的一台服务器有奇怪的权限(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,它应该可以正常工作。

+1

在我的系统中(恢复后),该文件归root所有......“chown user.user〜/ .ssh/known_hosts'修复了这个问题。 – Paolo

+0

有趣。我是怎么面对这个相当愚蠢的问题的。 'chmod u + w'解决了这个问题。必须是一些错误的安全脚本... – gluk47

2

它发生在我身上,仅仅是因为权限被破坏。我的用户没有读取或写入该文件的权限。固定的权限解决了问题

2

好了,所以理想的权限是这样
SSH的目录(您可以通过键入ls -ld ~/.ssh/得到这个)
drwx------ 2 oroborus oroborus 4096 Nov 28 12:05 /home/oroborus/.ssh/

d表示目录,RWX意味着用户oroborus具有读写和执行权限。这里oroborus是我的电脑名称,你可以通过回显$ USER找到你的电脑名称。第二个oroborus实际上是这个团体。你可以阅读更多关于每个字段的含义here。学习这一点非常重要,因为如果您正在使用ubuntu/osx或任何Linux发行版,您会再次遇到它。

现在,让您的许可,这个样子的,你需要输入
sudo chmod 700 ~/.ssh

7二进制是这意味着读1个写1并执行1 111,您可以通过类似的逻辑解码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 

您在这里给您的用户在这里给所有文件的读写权限。 您可以通过键入ls -l ~/.ssh/

这个问题看发生这种情况是因为SSH是一个程序试图写它的文件夹中的文件名为known_hosts中。如果它知道它没有足够的权限,它将不会写入该文件,因此会失败。这是我对这个问题的理解,更有知识的人可以在这方面投入更多的精力。 希望它有帮助

0

我再次生成“ssh”键并添加到我的git帐户。这对我有效。

请找到下面的命令,生成“SSH密钥”:

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

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

Generating public/private rsa key pair.

- >当系统提示“输入要保存的关键文件”,然后按回车键。这接受默认的文件位置。

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

- >在提示时,键入安全密码。欲了解更多信息,请参阅"Working with SSH key passphrases"

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

Enter same passphrase again: [Type passphrase again]

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

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

希望这个作品!

0

此命令为我工作,

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

由@kenorb提到

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