ssh“权限太开放”错误

时间:2012-02-14 02:02:32

标签: permissions ssh

我的mac出了问题,我无法在磁盘上保存任何类型的文件。 我不得不重新启动OSX lion并重置文件和acls的权限。

但是现在当我想提交存储库时,我从ssh中得到以下错误:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

我应该为id_rsa文件提供哪些权限级别?

33 个答案:

答案 0 :(得分:2811)

密钥只能由您阅读:

chmod 400 ~/.ssh/id_rsa

600 似乎也很好(事实上在大多数情况下更好,因为你不需要更改文件权限来编辑它)。

联机帮助页(man ssh

中的相关部分
 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

答案 1 :(得分:87)

在Windows 8.1中使用Cygwin,需要运行命令:

  

chgrp用户〜/ .ssh / id_rsa

然后可以应用此处发布的解决方案,400或600即可。

  

chmod 600~ / .ssh / id_rsa

参考:http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8

答案 2 :(得分:32)

适用于Windows 8.1的与语言环境无关的解决方案是:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545是一个special ID,总是引用“用户”群组,即使您的语言区域为用户使用了不同的词语。

答案 3 :(得分:28)

0600是我的设定(并且它正在运作)

答案 4 :(得分:22)

AFAIK的值是:

700表示密钥文件所在的隐藏目录“.ssh”

600为密钥文件“id_rsa”

答案 5 :(得分:17)

Windows 10 SSH进入AWS上的Ubuntu EC2“权限太开放”错误

我遇到了这个问题,试图使用AWS的.pem文件将其SSH到Ubuntu EC2实例。

在Windows中,当我将此密钥放入.ssh文件夹下创建的文件夹中时,此方法起作用了

C:\Users\USERNAME\.ssh\private_key

要在Windows 10中更改权限设置:

文件设置>安全>高级

禁用继承

将继承的权限转换为显式权限

删除除管理员以外的所有权限条目

然后可以安全连接。

答案 6 :(得分:13)

密钥的“0x00”权限要求有一个例外。如果密钥由root拥有并由拥有用户的组拥有,则它可以是“0440”,该组中的任何用户都可以使用该密钥。

我相信这将适用于“0xx0”集中的任何权限,但我没有测试每个版本的每个组合。我在CentOS 6上尝试过0660和5.3p1-84,该组不是用户的主要组而是辅助组,并且工作正常。

对于某人的个人密钥,通常不会这样做,但对于用于自动化的密钥,在您不希望应用程序能够弄乱密钥的情况下。

类似的规则适用于.ssh目录限制。

答案 7 :(得分:10)

提供400个许可, 执行以下命令

chmod 400 /Users/username/.ssh/id_rsa

enter image description here

答案 8 :(得分:4)

在Windows 10上,cygwin的chmod和chgrp对我来说还不够。我必须右键单击文件->属性->安全性(选项卡),然后删除除活动用户外的所有用户和组。

答案 9 :(得分:4)

我在Windows 10中出现错误,因此我将权限设置为以下内容,并且可以正常工作。

Permission for id_rsa of windows 10

详细信息,删除其他用户/组,直到只有“ SYSTEM”和“ Administrators”为止。然后将Windows登录名(仅具有“读取”权限)添加到其中。

请注意,id_rsa文件位于c:\users\<username>文件夹下。

答案 10 :(得分:4)

什么对我有用

  

chgrp用户文件夹

     

chmod 600 FOLDER

答案 11 :(得分:3)

仅适用于Windows用户。 转到文件属性->安全->高级

  1. 禁用继承属性
  2. 将继承的权限转换为显式权限。
  3. 删除所有权限条目,但“管理员”除外。 enter image description here

enter image description here

答案 12 :(得分:3)

正如人们所说,在Windows中,我只是将pem文件放在C:\ Users [user] .ssh \中,因此解决了。尽管您可以从不起作用的bash或powershell提示符中执行chmod和其他命令行选项。我没有更改rsa或其他任何内容。然后,在运行连接时,您必须将路径指向pem文件在.ssh文件夹中:

ssh -i“ C:\ Users [user] .ssh \ ubuntukp01.pem” ubuntu @ ec [ipaddress] .us-west-2.compute.amazonaws.com

答案 13 :(得分:2)

键入此命令可解决您的问题。

chmod 600 ~/.ssh/id_rsa

答案 14 :(得分:2)

对于我(使用Linux的Ubuntu子系统),错误消息更改为:

 Permissions 0555 for 'key.pem' are too open
使用chmod 400之后

。 事实证明,使用root作为默认用户是原因。

使用cmd进行更改:

 ubuntu config --default-user your_username

答案 15 :(得分:2)

此处有交集消息。 如果您的私钥太开放,操作Syatems足够聪明,可以拒绝远程连接。它理解id_rsa的权限是敞开的风险(阅读,任何人都可以编辑)。

{有人可能先改变你的锁,然后用他已经拥有的钥匙打开它。 }

cd ~/.ssh
chmod 400 id_rsa

PS:

在处理多个服务器(非生产)时,我们大多数人都觉得需要使用ssh连接远程服务器。一个好主意是使用一堆应用程序级代码(可能是使用jsch的java)来在服务器之间创建ssh信任。这种方式连接将是无密码的。 Incase,perl已安装 - 也可以使用net ssh模块。

答案 16 :(得分:2)

这是对我有用的(在Mac上)

sudo chmod 600 path_to_your_key.pem 

然后:

ssh -i path_to_your_key user@server_ip

希望有帮助

答案 17 :(得分:1)

700  folder
644  id_rsa.pub

这对我有用。

答案 18 :(得分:1)

我将所有自己的证书和密钥保存在一个目录中,这适用于 PuTTY 之类的工具,但我从 scp 命令收到了“太开放”的错误消息。我发现 Windows 已经维护了一个 C:\users\ACCOUNTNAME\.ssh 文件夹,该文件夹具有用于存储 SSH 密钥的正确访问权限。只要您保留内容备份(Windows 有时会在更新期间将其删除),或者在您的用户文件夹中为 ssh 密钥创建您自己的文件夹,这将正常工作,因为只有您和管理员才能访问该父文件夹。< /p>

在更改 Windows 文件夹的访问权限时要非常小心。我这样做了,Windows 每天都会扫描、读取和写入我 C: 驱动器上的所有文件,这个过程会导致计算机慢几分钟。

答案 19 :(得分:1)

对于Windows 10,这是我发现适用于我的东西:

  1. 将密钥移至Linux文件系统: undefined
  2. 设置该键的权限: mv ~/.ssh /home/{username}
  3. 创建指向该键的符号链接: chmod 700 /home/{username}/.ssh/id_rsa

如果您将主目录(ln -s /home/{username}/.ssh ~/.ssh)设置为存储在Windows而不是Linux中(在~/mnt/下),则会发生这种情况。

答案 20 :(得分:0)

在我的情况下,我尝试从Windows 10中的Ubuntu应用程序进行连接,并收到上述错误。 可以通过在实际命令之前在Ubuntu控制台中运行sudo su来解决此问题,而无需进行任何权限更改

答案 21 :(得分:0)

I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    First find the location of the public keys because when you try to login to ftp using this public key. first we need to create a key and we set to set that keys permissions to 600.
            Make sure you are in correct location.
            step1:
            go the correct location
            step2:
            After you are in right location
 command: 
     chmod 600 id_rsa

        This has solved my issue.

答案 22 :(得分:0)

从另一台Mac迁移后,我遇到了同样的问题。 而且它被我的钥匙阻止连接github。

我按如下所示重置了权限,现在效果很好。

chmod 700 ~/.ssh     // (drwx------)
cd ~/.ssh            
chmod 644 *.pub      // (-rw-r--r--)
chmod 600 id_rsa     // (-rw-------)

答案 23 :(得分:0)

我尝试对我的私钥进行600级的许可,并且对我有用。 chmod 600私钥 [dev] $ ssh -i privateKey user @ ip 工作

chmod 755私钥 [dev] $ ssh -i privateKey user @ ip 它给出以下问题: “ privateKey”的权限0755太开放了。 要求他人不能访问您的私钥文件。 此私钥将被忽略。 加载密钥“ privateKey”:权限错误

答案 24 :(得分:0)

另一个技巧是在downloads文件夹上执行此操作。 从AWS EC2实例下载私钥后,文件将位于此文件夹中,然后只需键入命令

ssh-keygen -y -f myprivateKey.pem> mypublicKey.pub

答案 25 :(得分:0)

我在玩Ansible时遇到了这个错误。我已将私钥的权限更改为 600 以解决此问题。它有效!

chmod 600 .vagrant/machines/default/virtualbox/private_key

答案 26 :(得分:0)

我在连接到 AWS 实例时在 Windows 上的 WSL 上遇到了这个问题。我的问题通过切换到经典的命令提示符得到了解决。您可以尝试切换到其他终端界面,看看是否有帮助。

答案 27 :(得分:0)

我通过“sudo”获得了成功

sudo chmod 400 pem-file.pem
sudo ssh -i pem-file.pem username@X.X.X.X

答案 28 :(得分:0)

就我而言,问题是空格太多。

ssh -i mykey.pem  ubuntu@instace.eu-north-1.compute.amazonaws.com

但是

ssh -i mykey.pem ubuntu@instace.eu-north-1.compute.amazonaws.com

工作正常。问题是空格被当作用户名的一部分。

答案 29 :(得分:0)

我正在使用 Windows 10 并尝试通过 SSH 连接到 EC2 实例 与其在 Windows 上使用 cygwin,不如尝试使用 gitbash。 在对密钥执行 chmod 400 后,我可以通过 SSH 连接到 EC2 实例,但在 cygwin 中同样对我不起作用。 Windows 将 .pem 文件视为来自互联网并阻止它,即使禁用继承也不起作用。

我将文件转换为 .ppk 格式,它也可以从腻子中正常工作。 它不适用于 cygwin。

答案 30 :(得分:-1)

Putty可以在Windows 10上完成工作。它使用私钥作为输入来生成公钥。

  1. https://www.putty.org/下载腻子
  2. 安装腻子。安装时会出现两个应用程序:putty config,putty key gen
  3. 启动puttyGen
  4. 单击“加载”并选择一个私钥文件。请注意,您需要使用.ppk扩展名重命名私钥文件,例如private-key.ppk enter image description here

答案 31 :(得分:-1)

我在EC2上使用VPC并收到相同的错误消息。我注意到我正在使用公共DNS。我改为私有DNS和挥发!!它有效...

答案 32 :(得分:-2)

对于Win10,需要将密钥移至用户的主目录 对于linuxlike操作系统,您需要将chmod设置为700 like或600 etc。