EC2 - 无法使用 ec2-user 登录
EC2 - Unable to login with ec2-user
我有一个 AWS 微型实例,使用 ec2-user 登录该实例直到现在都没有问题。我更改了 ec2-user 的一些权限(基本上删除了它添加到的 www 组并再次添加了该组)。现在我被锁定在实例之外。我得到的错误是:
断开连接:没有可用的受支持的身份验证方法(服务器 sent:publickey)
我检查了以下内容,一切似乎都已就绪:
- 我的 IP 在 AWS 安全组中更新
- 我的密钥 (.ppk) 与我使用了几个月的密钥相同
- 我的安全组启用了 80 和 442
请帮忙...这真的很困扰我!
不确定您是否在 9 个月后看到了这个 post,但看起来有人遇到过类似的问题。如果您使用的是 IAM,请确保您的内联策略允许 EC2 访问。
您收到来自 SSH 服务的错误,因此您可以确定这不是防火墙问题。
很难确切知道您做了什么,但您可能无意中破坏了对存储允许的 public 密钥的文件的访问 ~/.ssh/authorized_keys
。此文件仅适用于非常有限的权限。
有一种方法可以从中恢复,但它涉及几个步骤。
- 启动一个新的实例,可以是微实例,它只会持续一段时间。
- 停止当前实例,分离根卷并将其附加到新实例。
- 安装卷,修复 authorized_keys 文件的权限。
- 卸载并分离卷,重新附加到原始实例。
如果一切设置正确,您的密钥应该可以在现有实例上再次使用。
如果 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 additional-user@<ec2 public ip>
记得清理你的 User Data
,这样它就不会在后续启动时保留 运行。一旦 ec2-user 再次工作,也取消配置其他用户(或至少删除其 sudo 访问权限)。
更多详细说明,请参见:https://bitbucket.org/thorntechnologies/sftpgateway-public/wiki/Locked%20out%20of%20EC2%20instance
我有一个 AWS 微型实例,使用 ec2-user 登录该实例直到现在都没有问题。我更改了 ec2-user 的一些权限(基本上删除了它添加到的 www 组并再次添加了该组)。现在我被锁定在实例之外。我得到的错误是:
断开连接:没有可用的受支持的身份验证方法(服务器 sent:publickey)
我检查了以下内容,一切似乎都已就绪:
- 我的 IP 在 AWS 安全组中更新
- 我的密钥 (.ppk) 与我使用了几个月的密钥相同
- 我的安全组启用了 80 和 442
请帮忙...这真的很困扰我!
不确定您是否在 9 个月后看到了这个 post,但看起来有人遇到过类似的问题。如果您使用的是 IAM,请确保您的内联策略允许 EC2 访问。
您收到来自 SSH 服务的错误,因此您可以确定这不是防火墙问题。
很难确切知道您做了什么,但您可能无意中破坏了对存储允许的 public 密钥的文件的访问 ~/.ssh/authorized_keys
。此文件仅适用于非常有限的权限。
有一种方法可以从中恢复,但它涉及几个步骤。
- 启动一个新的实例,可以是微实例,它只会持续一段时间。
- 停止当前实例,分离根卷并将其附加到新实例。
- 安装卷,修复 authorized_keys 文件的权限。
- 卸载并分离卷,重新附加到原始实例。
如果一切设置正确,您的密钥应该可以在现有实例上再次使用。
如果 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 additional-user@<ec2 public ip>
记得清理你的 User Data
,这样它就不会在后续启动时保留 运行。一旦 ec2-user 再次工作,也取消配置其他用户(或至少删除其 sudo 访问权限)。
更多详细说明,请参见:https://bitbucket.org/thorntechnologies/sftpgateway-public/wiki/Locked%20out%20of%20EC2%20instance