警告:未受保护的私钥文件!当尝试SSH到Amazon EC2实例时

我正在亚马逊EC2实例上设置熊猫。 我昨晚设置了我的帐户和工具,使用SSH与我自己的个人实例交互没有问题,但现在我不被允许进入Panda的EC2实例。 从熊猫开始 < / p >

我得到以下错误:

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @


Permissions 0644 for '~/.ec2/id_rsa-gsg-keypair' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

昨晚,为了进入我的个人实例,我已经将我的keypair chmod为600,并尝试将权限设置为0,甚至生成新的密钥字符串,但似乎什么都不起作用。

任何帮助都是极大的帮助!


嗯,似乎除非目录上的权限设置为777,否则ec2-run-instances脚本无法找到我的密钥文件。 我是SSH的新手,所以我可能会忽略一些东西
225750 次浏览

确保包含私钥文件的目录被设置为700

chmod 700 ~/.ec2

为了昨晚进入我的个人实例,我把我的密码修改为600,

这就是它应该有的样子。

EC2文档中,我们有如果你正在使用OpenSSH(或任何合理的SSH客户端),那么你可能需要设置这个文件的权限,以便它只能由你读取。熊猫文档,你链接到亚马逊的文档链接,但真的没有传达它有多重要。

其思想是密钥对文件就像密码一样,需要受到保护。因此,您正在使用的ssh客户端要求这些文件是安全的,并且只有您的帐户可以读取它们。

将目录设置为700确实应该足够了,但是只要文件是600,777就没有问题。

您遇到的任何问题都是客户端问题,因此请确保在任何后续问题中包含本地操作系统信息!

为了解决这个问题,

  1. 你需要将权限重置回默认值:

    sudo chmod 600 ~/.ssh/id_rsa
    sudo chmod 600 ~/.ssh/id_rsa.pub
    

    如果你得到另一个错误:

    • 您确定要继续连接(是/否)?是的
    • 日志含义添加主机到已知主机列表(/home/geek/.ssh/known_hosts)失败。
  2. 这意味着该文件的权限设置也不正确,并且可以通过以下方式进行调整:

    sudo chmod 644 ~/.ssh/known_hosts
    
  1. 最后,你可能还需要调整目录权限:

    sudo chmod 755 ~/.ssh
    

这应该能让你重新开始工作。

私钥文件需要保护。在我的情况下,我一直在使用public_key身份验证很长一段时间,我过去设置权限为600 (rw- --- ---)私钥和644 (rw- r——r——)和主文件夹中的.ssh文件夹,你将有700权限(rwx --- ---)。要设置此设置,请转到用户的主文件夹并运行以下命令


设置。ssh文件夹的700权限

chmod 700 .ssh


设置私钥文件的600权限

chmod 600 .ssh/id_rsa


设置公钥文件的644权限

chmod 644 .ssh/id_rsa.pub

将您的私钥、公钥、known_hosts放在同一个目录下,尝试登录如下:

ssh -I(small i) "hi.pem" ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
  • 相同的目录, cd /Users/prince/Desktop。 现在输入ls命令 你们应该看到 李**.pem **.ppk known_hosts < / >

注意:你必须尝试从相同的目录登录,否则你会得到一个权限拒绝错误,因为它不能从你的当前目录找到。pem文件。


如果你想能够从任何目录SSH,你可以添加以下~/.ssh/config文件…

Host your.server
HostName ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ec2/id_rsa-gsg-keypair
IdentitiesOnly yes

现在你可以SSH到你的服务器,不管目录在哪里,只要输入ssh your.server(或者你放在“Host”后面的任何名字)。

我在想别的事情,如果你试图登录一个不同的用户名,不存在,这是你会得到的消息。

因此,我假设您可能试图使用ec2-user进行ssh,但我记得最近大多数centos ami使用centos user而不是ec2-user

所以如果你是 ssh -i file.pem centos@public_IP请告诉我你正在尝试用正确的用户名ssh,否则这可能是你看到这样的错误消息的一个强烈原因,即使你的~/有正确的权限。Ssh /id_rsa or file.pem

. sh

我也有同样的问题,但我通过将我的密钥文件权限更改为600来解决它。

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

在windows上,尝试使用git bash并使用您的Linux命令。容易的方法

chmod 400 *****.pem


ssh -i "******.pem" ubuntu@ec2-11-111-111-111.us-east-2.compute.amazonaws.com

给无意中发现这一点的人一个提示:

如果您正在尝试使用已与您共享的密钥进行SSH,例如:

ssh -i /path/to/keyfile.pem user@some-host

其中keyfile.pem是与你共享的私钥/公钥,你用它来连接,请确保将其保存到__ABC1和chmod 777中。

试图使用文件时,它被保存在我的机器上的其他地方给出了OP的错误。不确定是否有直接关系。

使用chmod命令修改文件权限

sudo chmod 700 keyfile.pem

解决方案是使它只有文件的所有者可读,即八进制模式表示的最后两位数字应该为零(例如模式0400)。

OpenSSH在名为sshkey_perm_ok的函数中检查authfile.c:

/*
* if a key owned by the user is accessed, then we check the
* permissions of the file. if the key owned by a different user,
* then we don't care.
*/
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
error("Permissions 0%3.3o for '%s' are too open.",
(u_int)st.st_mode & 0777, filename);
error("It is required that your private key files are NOT accessible by others.");
error("This private key will be ignored.");
return SSH_ERR_KEY_BAD_PERMISSIONS;
}

请参阅注释后的第一行:它对文件的模式执行“按位和”操作,选择最后两个八进制数字中的所有位(因为07对于0b111是八进制,其中每个位分别代表r/w/x)。

简单地说,pem文件的权限对机器上的每个用户都是开放的,即任何人都可以读写该文件 在windows上很难做chmod的方式,我发现是使用git bash。 我遵循以下步骤

  1. 移除用户权限

    Chmod ugo-rwx abc.pem

  2. 仅为该用户添加权限

    chmod u + rw

  3. 执行chmod 400

    Chmod 400 abc.pem

4.现在为您的实例尝试ssh -i

如果你是在windows机器上,只需复制。pem文件到C盘的任何文件夹

.重新执行
ssh -i /path/to/keyfile.pem user@some-host

在我的例子中,我把那个文件放在下载中,这实际上是可行的。

或者遵循https://99robots.com/how-to-fix-permission-error-ssh-amazon-ec2-instance/