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


259

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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的一些答案,但是它不起作用。
密钥文件权限:

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_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

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

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 hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com 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
您可以编辑问题以包括您正在运行的特定ssh命令吗?如果有问题的密钥文件是在ssh配置文件中指定的,请同时包含配置文件中的相关行。
肯斯特,2015年

对我来说是“权限错误”
签署

-i id_rsa.pub在ssh命令中添加用于连接时,我会遇到此问题。似乎强制在ssh命令部队上使用一些公钥要求输入密码(即使密码短语为空,至少在我的情况下也是如此)
DiegoAndrésDíazEspinoza

Answers:


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

看来您正在尝试使用错误的密钥文件。用“的.pub”扩展名的文件是公共密钥文件。没有扩展名“ .pub”的相应文件是私钥文件。当运行ssh客户端连接到远程服务器时,必须向ssh客户端提供私钥文件。

您的.ssh/config文件(或/etc/ssh_config)中可能有一行,看起来像这样:

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

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

IdentityFile .../.ssh/vm/vm_id_rsa

我在使用SQLPro时遇到此问题,并且错误地选择了公共(.pub)文件而不是私有文件。
亨利

1
ssh -i id_ed25519.pubssh -i id_ed25519工作时遇到此错误
Boris,

2
谢谢在这里救了我。
阿伯纳

辉煌!谢谢!
Alliswell

573

我建议你这样做:

chmod 400〜/ .ssh / id_rsa

对我来说,工作很好。


33
“Permissions 0644 for 'id_rsa.pub' are too open."因此密钥被忽略了。这可能是因为我从另一台PC复制了密钥文件。但是修复权限可以解决此问题。谢谢!
parasrish

2
@ xoxn--1'w3k4n为什么这么糟?如果人们复制或对这些敏感文件的读写访问管理不善,就应该加以解决。
杰拉德(Gerard)

5
这不是胶带。如果您复制了ID,则很有意义。
ALisboa

从旧计算机复制ssh密钥时为我工作,作为解决方案!
尼克

1
也可以在WSL上工作
h-rai

59

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

试试这个:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub

使用公共密钥400或600,我得到的格式无效ssh-add ~/.ssh/id_rsa.pub
rhand


23

运行以下命令后,它对我有用

须藤chmod 600 /path/to/my/key.pem


13

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

chmod 400〜/ .ssh / id_rsa

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

chmod 400 directory_path / id_rsa

这对我有用。


2
这如何改善其他答案?
Nico Haase

2
不是公开密钥必须受到保护,而是私有密钥
Picarus

私钥必须受到保护。
bashan

这个对我有用。我认为chmod 400 ~/.ssh/id_rsa这就是您的意思。如上所述:扩展名为“ .pub”的文件是公钥文件。没有扩展名“ .pub”的相应文件是私钥文件。我们需要保护私人的。
naveenKumar '18

编辑答案。它应该是私钥。
阿尼班'18

12

很多类似的答案,但没有解释...

因为私钥文件权限太开放而引发错误。这是安全隐患。

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

  1. 变更拥有者 chown <unix-name> <private-key-file>
  2. 设置最小权限(只读给文件所有者) chmod 400 <private-key-file>

7

对于我来说,默认模式id_rsa600,这意味着readablewritable

当我将此文件推送到git repo并将其从另一台PC中拉出后,有时私钥文件的模式变为 -rw-r--r--

当我在指定私钥文件后使用ssh拉回购时,它失败并提示警告与您相同。以下是我的脚本。

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull git@gitee.com:someone/somerepo.git "

我只是通过将模式更改为来解决此问题600

chmod 600 $PATH_TO_RSA/id_rsa

6

赋予渗透权400将密钥设为私有,并且未知人员无法访问。它使密钥成为受保护的密钥。

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


2

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

chmod 0400 .ssh/config

然后:

chmod 0400 .ssh/<<KEYFILE_PATH>>

2

那些建议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密钥


可能是这样,尽管在我的情况下,当我搜索此问题并得到答案时,chmod 400是解决问题所需要的。感谢所有的帮助!
J2N


1

只需在下面跑到您的pem

sudo chmod 600 /path/to/my/key.pem 

-8

我删除了.pub file,它起作用了。


1
无需删除.pub文件。这也意味着您没有计算机上的公钥记录,以备后用。
亨利

1
如果您具有OpenSSH,则可以使用来从私钥重新生成丢失的公钥文件ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key。因此,它并没有真正丢失。:)
dannysauer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.