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.
Kin*_*ngz 25
对于Ubuntu上的人,如果你收到这个错误:
无法将主机添加到已知主机列表中
然后只需删除该known_hosts文件,然后重新运行您的ssh.这将known_host使用适当的权限重新生成文件,并将您尝试ssh的远程主机添加到此文件中.
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.
这是我需要的解决方案。
sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/*
sudo chown -R ${USER} ~/.ssh/
sudo chgrp -R ${USER} ~/.ssh/
Run Code Online (Sandbox Code Playgroud)
好的,理想的权限如下所示
对于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的文件。在写入时,如果知道它没有足够的权限,它将不会写入该文件,因此会失败。这是我对问题的理解,知识渊博的人可以在此方面做更多的阐述。希望能帮助到你
以防万一其他人遇到此错误消息,并且 .ssh 和 .ssh/known_hosts 上的权限看起来不错。
我的问题是我已经从 snap 安装了 gh,并且 snap 应用程序对文件系统的访问受到限制,并且显然无法访问 .ssh。解决办法就是把snap安装去掉,从apt安装。