SSH密钥:“’id_rsa.pub’的权限0644太开放了。”在mac上

SSH Key: “Permissions 0644 for 'id_rsa.pub' are too open.” on mac

我在Mac上生成一个ssh密钥对,并将公钥添加到我的Ubuntu服务器(实际上,它是我的Mac上的虚拟机),但当我尝试登录Ubuntu服务器时,它会说:

1
2
3
4
5
6
7
8
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

我尝试了很多方法来解决这个问题,更改密钥文件模式,更改文件夹模式,就像StackOverflow上的一些答案一样,但它不起作用。
密钥文件权限:

1
2
3
4
5
6
vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

请给我个主意…===========================

我将主机信息写入ssh配置:

1
2
3
4
Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

我运行命令"ssh-v ubuntuvm",它显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).


我建议你这样做:

1
chmod 400 ~/.ssh/id_rsa

对我来说,工作很好。


1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

似乎您试图使用错误的密钥文件。扩展名为".pub"的文件是公钥文件。没有扩展名".pub"的对应文件是私钥文件。当运行ssh客户机连接到远程服务器时,必须向ssh客户机提供私钥文件。

您的.ssh/config文件(或/etc/ssh_config文件)中可能有一行,如下所示:

1
IdentityFile .../.ssh/vm/vm_id_rsa.pub

您需要从文件名中删除".pub"扩展名:

1
IdentityFile .../.ssh/vm/vm_id_rsa


登录用户应该可以读取密钥。

试试这个:

1
2
3
cd ~/.ssh
chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub

1
chmod 400 path/to/filename

这对我有用。当我做这个文件时,我可以连接到我的EC2实例


在我的例子中,它是一个.pem文件。结果也证明了这一点。更改了文件的权限,该文件工作正常。

chmod 400 ~/.ssh/dev-shared.pem

感谢所有在上面帮忙的人。


如果密钥在~/.ssh目录中,请使用

chmod 400~/.ssh/id_rsa

如果密钥在不同的目录中,请使用

chmod 400目录路径/idu rsa

这对我有用。


对于我来说,id_rsa的默认模式是600,即readablewritable

当我把这个文件推到一个git repo并从另一台PC上提取它之后,有时私钥文件的模式变成了-rw-r--r--

当我在指定私钥文件之后用ssh拉repo时,它失败了,并提示警告您同样的情况。下面是我的剧本。

1
2
ssh-agent bash -c"ssh-add $PATH_OF_RSA/id_rsa; \
git pull [email protected]:someone/somerepo.git"

我只需将模式更改为600就可以解决这个问题。

1
chmod 600 $PATH_TO_RSA/id_rsa

很多相似的答案,但没有解释…

由于私钥文件权限太打开,引发了错误。这是一种安全风险。

将私钥文件的权限更改为最小(所有者只读)

  • 变更所有人chown
  • 设置最小权限(只读到文件所有者)chmod 400

  • 授予权限400会使密钥成为私有的,并且无法被未知的人访问。它使密钥成为受保护的密钥。

    1
    chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub

    如果您使用的是.ssh/config文件,请尝试

    1
    chmod 0400 .ssh/config

    然后:

    1
    chmod 0400 .ssh/<<KEYFILE_PATH>>

    那些建议chmod 400 id_rsa.pub的人听起来一点也不对劲。OP很可能使用pub密钥而不是ssh的私钥。

    所以修复它可能和ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@host一样简单。

    ---更新---

    查看本文https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2了解如何设置ssh密钥


    江户十一〔三〕为我工作。


    我取出了.pub file,它起作用了。