【问题标题】:Adding to authorized_keys via AWS EC2 Instance User Data通过 AWS EC2 实例用户数据添加到 authorized_keys
【发布时间】:2018-10-12 09:39:09
【问题描述】:

最近我犯了一个愚蠢的错误,即在我的 AWS 实例上清除用户的 ~/.ssh/authorized_keys 文件的内容。因此,我不能再 ssh 到实例上。

我意识到我可以通过 AWS EC2 实例用户数据添加回这些密钥。但是到目前为止,我还没有运气。我停止了我的实例,将以下内容添加到用户数据并再次启动它:

#!/bin/bash
> /home/myUser/.ssh/authorized_keys
echo "ssh-rsa aaa/bbb/ccc/ddd/etc== mykeypair" >> /home/myUser/.ssh/authorized_keys
chown myUser:myUser /home/myUser/.ssh/authorized_keys
chmod 600 /home/myUser/.ssh/authorized_keys

这应该清空文件,添加公钥对并确保文件上存在正确的权限。

但是我的私钥仍然被拒绝。

我知道密钥是正确的,所以它一定与我的实例用户数据有关。我也尝试在所有命令前加上“sudo”。

【问题讨论】:

    标签: amazon-web-services ssh


    【解决方案1】:

    尝试使用 cloud-init 指令而不是 shell

    #cloud-config
    cloud_final_modules:
    - [users-groups,always]
    users:
      - name: example_user
        groups: [ wheel ]
        sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
        shell: /bin/bash
        ssh-authorized-keys: 
        - ssh-rsa AAAAB3Nz<your public key>...
    

    默认行为是每个实例执行一次。然而,这些 说明在每次重启或重启实例时添加密钥。 如果删除用户数据,则恢复默认功能。 这些说明适用于所有支持 cloud-init 指令。

    https://aws.amazon.com/premiumsupport/knowledge-center/ec2-user-account-cloud-init-user-data/

    【讨论】:

      【解决方案2】:

      来自官方文档:

      默认情况下,用户数据和 cloud-init 指令仅在运行期间运行 启动实例时的第一个启动周期。然而,AWS 市场 第三方 AMI 的供应商和所有者可能已经制作了自己的 脚本运行方式和时间的自定义。

      https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

      因此,在您关闭实例后修改用户数据在大多数情况下不会有用。

      解决方案:您可以分离 EBS 卷,将其附加到您可以连接的 EC2 实例,挂载该卷,修复 authorized_keys,然后将卷连接回受影响的实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 2023-01-29
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2019-03-05
        • 1970-01-01
        相关资源
        最近更新 更多