it-swarm.cn

尝试SSH到Amazon Ec2实例 - 权限错误

这对某些人来说可能是一个非常简单的问题:)

我在Amazon EC2上创建了一个新的linux实例,并且作为其中的一部分下载了.pem文件以允许我进入SSH。

当我试图ssh:

ssh -i myfile.pem <public dns>

我有:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

关注 这篇文章 我试图chmod +600 pem文件,但现在当我ssh我得到:

Permission denied (publickey).

我在这里做的男生错误是什么? .pem文件位于我的主文件夹中(在osx中​​)。它的权限如下所示:

[email protected]   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem
628
Matt Roberts

问题是文件上有错误的mod。

通过执行轻松解决 -

chmod 400 mykey.pem

取自亚马逊的指示 -

您的密钥文件不能公开查看以使SSH正常工作。如果需要,请使用此命令:chmod 400 mykey.pem

1229
Kof

您可能使用错误的用户名登录:

  • 大多数Ubuntu图像都有一个用户ubuntu
  • 亚马逊的AMI是ec2-user
  • 大多数Debian图像都有rootadmin

要登录,您需要调整ssh命令:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-Host

HTH

251
Till

我知道这是 非常 迟到游戏...但是这个 总是 对我有用:

步骤1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

第2步,简单地ssh in :)

ssh [email protected]<instance public dns/ip>

例如.

ssh [email protected]

希望这有助于某人。

56
user2838357

好的,对我有用的唯一一件事是:

  1. 更改密钥的权限

    chmod 400 mykey.pem

  2. 确保使用 ec2-user 和正确的ec2-99 ...地址登录。当您登录并查看列出的实例时,ec2-99地址位于aws控制台的底部

    ssh -i mykey.pem [email protected]

37
bobobobo

看看 这篇文章 。您不使用公共DNS,而是使用表单

ssh -i your.pem [email protected]

名称在AMI面板上可见的位置

27
renick

使用以下命令更改密钥文件的权限:

chmod 400 key-file-name.pem

请参阅AWS文档以连接到实例:

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux

14
Ayush Goyal

在Windows中,您可以转到pem文件的属性,然后转到安全选项卡,然后转到提前按钮。

删除继承和所有权限。然后给自己完全控制。毕竟SSL不会再次给你同样的错误。

7
Nadeeshan Herath

在Mac终端中,做“chmod 400 xyz.pem”没有帮助我,它一直说许可被拒绝。对于ubuntu用户,我建议

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem [email protected](注意用户是ubuntu)
6
Himalay Majumdar

我知道这个问题已经得到了回答,但对于那些已经尝试过这些问题的人来说,你仍然会得到令人讨厌的“Permission denied(publickey)”。尝试使用Sudo运行命令。当然这是一个临时解决方案,您应该正确设置权限,但至少可以让您确定当前用户没有以您需要的权限运行(如您所假设的那样)

Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

一旦你这样做,你会收到这样的消息:

Please login as the user "ec2-user" rather than the user "root"

这也很少记录。在这种情况下,只需这样做:

Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

你会得到光荣的:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|
6
Ricardo Cid

SSH密钥和文件权限最佳实践:

  • .ssh目录 - 0700(仅限所有者)
  • 私钥/ .pem文件 - 0400(由所有者只读)
  • 公钥/ .pub文件 - 0600(仅由所有者读写)

    chmod XXXX file/directory

4
Ryan

ssh -i /.pem user @ Host-machine-IP

我认为这是因为您输入了错误的凭据,或者您使用的是公钥而不是私钥,或者您的端口权限对所有人都是开放的。这对亚马逊来说很糟糕。

3
Syed Priom

使用PuTTY替代登录。它很好,但需要几步。

  1. 获取首次创建EC2实例时生成的.pem。
  2. 使用 PuttyGen转换.pem文件.ppk 因为PuTTY不读取.pem。
  3. 打开PuTTY并输入您的 主机名 这是您的实例用户名+公共DNS(例如:ubuntu @ ec2-xxx-xxx-xxx-xxx.region.compute.amazonaws.com)。 不是您的AWS账户用户名。
  4. 然后导航到 Connection> SSH> Auth 。然后添加你的 .ppk 文件。单击浏览,其中显示“用于身份验证的私钥文件”
  5. 单击“打开”,您应该能够立即建立连接。

我在Windows中使用PuTTY 0.66。

3
jarvis

对我来说问题是我的.pem文件在我的一个NTFS分区中。我把它移到我的linux分区(ext4)。

通过运行获得所需的权限:

chmod 400 my_file.pem

它奏效了。

2
Rishabh Agrahari

这个错误背后有三个原因。

  1. 你使用的是错误的钥匙。
  2. 您的密钥没有正确的权限。你需要将它chmod到400。
  3. 您使用的是错误的用户。 Ubuntu图像有一个用户 ubuntu ,亚马逊的AMI是 ec2-user 和debian图像有 root admin
2
Jagatveer Singh

做一个chmod 400 yourkeyfile.pem如果您的实例是Amazon linux,那么使用ssh -i yourkeyfile.pem ec2-user @ ip for ubuntu ssh -i yourkeyfile.pem ubuntu @ ip for centos ssh -i yourkeyfile.pem centos @ ip

2
sathee005

密钥文件不应公开查看,因此请使用权限400

chmod 400 keyfile.pem

如果上面的命令显示权限错误使用

Sudo chmod 400 keyfile.pem

现在ssh进入ec2机器,如果你仍然面临问题,请使用 ec2-user

ssh -i keyfile.pem [email protected]

1
singh30

只需将pem文件的权限更改为0600,仅允许允许的用户,它将像魅力一样工作。

Sudo chmod 0600 myfile.pem

然后尝试ssh它将完美地工作。

ssh -i myfile.pem <<ssh_user>>@<<server>>
1
Prash

除了其他答案之外,以下是我为此工作所做的事情:

  • 如果您还没有将密钥复制到.ssh文件夹:

cp key.pem ~/.ssh/key.pem

  • 为密钥授予适当的权限

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • 然后,添加密钥

ssh-add ~/.ssh/key.pem

现在你应该能够ssh EC2(:

1
Rodrigo Nantes

清单:

  1. 您使用的是私钥.pem文件吗?

  2. 它的权限设置正确吗? (我的亚马逊品牌AMI使用644,但Red Hat必须至少600或400.不知道Ubuntu。)

  3. 您是否在ssh系列中使用了正确的用户名?亚马逊品牌=“ec2-user”,Red Hat =“root”,Ubuntu =“ubuntu”。用户可以指定为“ssh -i pem usename @ hostname”OR“ssh -l username -i pem hostname”

1
fivedogit

默认情况下,不允许使用pem键。你只需要更改权限:

chmod 400 xyz.pem

如果ubuntu实例然后连接使用:

ssh -i xyz.pem [email protected]

1
rahul kumar

好吧,看看你的帖子说明,我觉得你做了2个错误: -

  1. 为私钥设置正确的权限 。下面的命令应该可以帮助您设置正确的文件permision。

    chmod 0600 mykey.pem

  2. 您尝试登录的ec2用户错误

    查看调试日志,我认为您已经生成了一个Amazon Linux实例。该实例类型的默认用户是ec2-user。如果实例是ubuntu那么你的默认用户就是ubuntu

    ssh -i privatekey.pem [email protected]_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or Fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

来源: https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

1
Prabuddha Chakraborty

您的密钥不能公开查看SSH才能工作。如果需要,请使用此命令:

chmod 400 Interview-apps.pem

Connect to your instance using its Public DNS:

ec2-**-***-***-***.us-west-2.compute.amazonaws.com

例:

ssh -i "Interview-apps.pem" [email protected]**-***-***-***.us-west-2.compute.amazonaws.com
0
BigData-Guru

以下是Linux用户使用.pem文件连接服务器的简单步骤:

步骤1:到pem文件的位置并将其复制到home .ssh位置。

cp example.pem ~/.ssh/example.pem

第2步:更改权限

chmod 400 ~/.ssh/example.pem

步骤3:运行以下命令

ssh -i ~/.ssh/example.pem [email protected]

由于此命令太长,因此您可以使用以下命令创建此别名:

 vim ~/.bashrc

最后以下面的方式写相同的命令。

alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'

现在重新启动系统并使用sshConnect连接您的服务器。

0
Ajai

我看到这个问题背后有两个原因

1)访问密钥没有正确的权限。具有默认权限的pem密钥不允许建立安全连接。你只需要更改权限:

chmod 400 xyz.pem

2)还要检查您是否使用正确的用户凭据登录。否则,在连接时使用Sudo

Sudo ssh -i {keyfile} ec2-user @ {远程主机的IP地址}

0
Abhijit Barua

这只是你的aws pem键的权限问题。

只需使用以下命令将pem键的权限更改为400即可。

chmod 400 pemkeyname.pem

如果您无权更改文件的权限,可以使用Sudo,如下面的命令。

Sudo chmod 400 pemkeyname.pem

我希望这应该工作正常。

0
Deepak N

解决这个问题的方法是将.pem文件移到apps目录中。 Soo说fooapp是我的应用程序的名称。我把它直接放在那里。

0
Nick Res