Mac OSX Lion 10.7。
为了解决奇怪的环境问题(自制软件没有安装wget,我有各种奇怪的块和错误),我卸载了zschrc和homebrew以及其他一些东西,然后安装了fish shell。 / p>
现在,每当我尝试向/从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时git@github.com ,我得到
Hi sashafklein! You've successfully authenticated, but GitHub does not provide shell access.
似乎只是我的本地计算机对我的ssh情况不满意。
答案 0 :(得分:100)
在您的具体情况下,您的known_hosts
是一个文件夹,因此您需要先删除它。
对于遇到类似问题的其他人,请检查您~/ssh/known_hosts
的正确权限,因为它可能由不同的用户(例如root)拥有。所以你可以尝试运行:
sudo chown -v $USER ~/.ssh/known_hosts
修复它。
答案 1 :(得分:25)
对于Ubuntu上的人,如果你收到此错误:
无法将主机添加到已知主机列表
然后只需删除known_hosts
文件,然后重新运行ssh。这将使用适当的权限重新生成known_host
文件,并将您尝试ssh的远程主机添加到此文件中。
答案 2 :(得分:17)
不应该known_hosts是一个平面文件,而不是一个目录?
如果那不是问题,那么Github上的this page可能会有所帮助。尝试使用带有-v或-vv标志的SSH来查看详细的错误消息。它可能会让你更好地了解失败的原因。
答案 3 :(得分:15)
我认为通过删除〜/ .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。
答案 4 :(得分:6)
好的,理想的权限看起来像这样
对于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
您已授予您的用户读写权限和执行权限。确保您的文件权限如下所示。
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的文件。在写入时,如果它知道它没有足够的权限,它将不会写入该文件,因此失败。这是我对这个问题的理解,更多知识渊博的人可以在这方面投入更多的光。 希望它有所帮助
答案 5 :(得分:6)
这个命令对我有用,
sudo chown -v $USER ~/.ssh/known_hosts
如@kenorb所述。
由于当前用户的权限被破坏而导致错误。
答案 6 :(得分:3)
这是我需要的解决方案。
sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/*
sudo chown -R ${user} ~/.ssh/
sudo chgrp -R ${user} ~/.ssh/
答案 7 :(得分:2)
只是因为权限被破坏才发生在我身上。我的用户没有对该文件的读取或写入权限。修复权限解决了问题
答案 8 :(得分:1)
我再次生成了“ssh”密钥并添加到我的git帐户中。这对我有用。
请查找以下命令以生成“ssh-key”:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- &GT;这会使用提供的电子邮件作为标签创建一个新的ssh密钥。
Generating public/private rsa key pair.
- &GT;当系统提示您“输入要保存密钥的文件”时,按Enter键。这接受默认文件位置。
Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]
- &GT;在提示符下,键入安全密码。有关详细信息,请参阅"Working with SSH key passphrases"
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
- &GT;生成密钥以复制密钥:
$ sudo cat /root/.ssh/id_rsa-pub
希望这有效!
答案 9 :(得分:0)
此命令对我有用,
sudo chmod +x ~/.ssh/known_hosts
答案 10 :(得分:0)
对我来说,我就是这样做的:
rm -rf ~/.ssh/known_hosts
然后:
我只是SSH到目标主机,一切都会好起来的。 仅当您不知道什么权限以及“ known_hosts”文件的默认所有者时才如此。
答案 11 :(得分:0)
检查文件的权限,如果很好,请检查父目录
我必须纠正
/home/sravindr/.ssh权限对我有用
答案 12 :(得分:0)
我遇到了这个问题,发现在~/.ssh/config
中有一行显示为:
UserKnownHostsFile=/home/.ssh-agent/known_hosts
我刚刚将这一行修改为:
UserKnownHostsFile=~/.ssh/known_hosts
那为我解决了这个问题。
答案 13 :(得分:0)
这可能是由于known_hosts文件由另一个用户拥有,即在大多数情况下是root。 您可以访问给定的路径目录(在本例中为/home/taimoor/.ssh/known_hosts),并检查根是否为所有者,并将其更改为默认所有者。
示例:
答案 14 :(得分:0)
当我尝试以下命令时,它可以与我一起工作
sudo chown $my_user .ssh/id_rsa
sudo chown $my_user .ssh/id_rsa.pub
sudo chown $my_user .ssh/known_hosts
答案 15 :(得分:-1)
对于任何感兴趣的人,这个人在Ubuntu中为我工作:
转到 .ssh 目录。
$ cd ~/.ssh
删除 known_hosts 文件。
$ rm known_hosts
重新推送您的Git更改。