我有一个AWS微型实例,直到现在,使用ec2-user登录到实例时都没有问题。我更改了ec2用户的一些权限(基本上删除了它添加到的www组,并再次添加该组)。现在我被锁定在实例之外。我得到的错误是:EC2 - 无法使用ec2-user登录
断开:不支持的认证方法可用(服务器发送:公钥)
我检查了以下,一切都似乎是在地方:
- 我的IP是在AWS安全组更新
- 我的密钥(.ppk)是一样的,我已经用了几个月
- 我的安全组有80和442启用
请帮忙...这真是困扰我大好时光!
我有一个AWS微型实例,直到现在,使用ec2-user登录到实例时都没有问题。我更改了ec2用户的一些权限(基本上删除了它添加到的www组,并再次添加该组)。现在我被锁定在实例之外。我得到的错误是:EC2 - 无法使用ec2-user登录
断开:不支持的认证方法可用(服务器发送:公钥)
我检查了以下,一切都似乎是在地方:
请帮忙...这真是困扰我大好时光!
您收到来自SSH服务的错误信息,因此您可以确定这不是防火墙问题。
它很难确切地知道你做了什么,但是你可能无意中打开了存储允许的公钥~/.ssh/authorized_keys
的文件的访问权限。该文件仅适用于非常有限的权限。
有一种方法可以从中恢复,但它确实涉及多个步骤。
如果一切设置正确,您的密钥应该再次在您的现有实例上工作。
感谢您的意见。最终我不得不开始一个崭新的实例并将其复制。我估计老人弄得太乱了 – coderatlarge
不确定您是否从9个月看到此post,但它看起来像有人有类似的问题。如果您使用IAM,请确保您的内联策略允许访问EC2。
如果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
--//
additional-user
用的用户名您的选择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
我想你的意思是443,而不是442? SSH默认使用端口22,它启用? – David