2015-04-12 46 views
0

我有一个AWS微型实例,直到现在,使用ec2-user登录到实例时都没有问题。我更改了ec2用户的一些权限(基本上删除了它添加到的www组,并再次添加该组)。现在我被锁定在实例之外。我得到的错误是:EC2 - 无法使用ec2-user登录

断开:不支持的认证方法可用(服务器发送:公钥)

我检查了以下,一切都似乎是在地方:

  1. 我的IP是在AWS安全组更新
  2. 我的密钥(.ppk)是一样的,我已经用了几个月
  3. 我的安全组有80和442启用

请帮忙...这真是困扰我大好时光!

+0

我想你的意思是443,而不是442? SSH默认使用端口22,它启用? – David

回答

0

您收到来自SSH服务的错误信息,因此您可以确定这不是防火墙问题。

它很难确切地知道你做了什么,但是你可能无意中打开了存储允许的公钥~/.ssh/authorized_keys的文件的访问权限。该文件仅适用于非常有限的权限。

有一种方法可以从中恢复,但它确实涉及多个步骤。

  1. 开始一个新的实例,可以是微型的,它只能保持一点。
  2. 停止当前实例,分离根卷并将其附加到新实例。
  3. 挂载卷,修改authorized_keys文件的权限。
  4. 卸载并分离该卷,重新附加到原始实例。

如果一切设置正确,您的密钥应该再次在您的现有实例上工作。

+0

感谢您的意见。最终我不得不开始一个崭新的实例并将其复制。我估计老人弄得太乱了 – coderatlarge

0

不确定您是否从9个月看到此post,但它看起来像有人有类似的问题。如果您使用IAM,请确保您的内联策略允许访问EC2。

0

如果ec2-user以某种方式损坏,您可以添加一个额外的用户。此方法不需要安装音量,而是依靠修改EC2控制台中的User Data

https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/

例如,您可以创建一个新的密钥:

ssh-keygen -t rsa -C private.key -f private.key -q -N ""

然后使用以下User Data

Content-Type: multipart/mixed; boundary="//" 
MIME-Version: 1.0 

--// 
Content-Type: text/cloud-config; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; filename="cloud-config.txt" 

#cloud-config 
cloud_final_modules: 
- [scripts-user, always] 

--// 
Content-Type: text/x-shellscript; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; filename="userdata.txt" 

#!/bin/bash 
USER=additional-user # 1 
adduser $USER 
echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/cloud-init 
mkdir /home/$USER/.ssh 
echo "ssh-rsa AAAAB3NzaC1yc2EAAA....A38MHe0KAzY9Ob private.key" >> /home/$USER/.ssh/authorized_keys # 2 
--// 
  1. 替换additional-user用的用户名您的选择
  2. 将双引号内的内容替换为您刚刚生成的private.key.pub内容。

然后,您应该能够使用SSH连接实例:

chmod 600 private.key 
ssh -i private.key [email protected]<ec2 public ip> 

记得清理你User Data,使其不留在以后启动运行。一旦ec2用户再次工作,也取消配置其他用户(或至少删除其sudo访问权限)。

有关详细说明,请参阅:https://bitbucket.org/thorntechnologies/sftpgateway-public/wiki/Locked%20out%20of%20EC2%20instance