通过 AWS EC2 实例用户数据添加到 authorized_keys

x3n*_*r0s 5 ssh amazon-web-services

最近我犯了一个愚蠢的错误,就是在我的 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sud*_*ran 8

尝试使用 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>...
Run Code Online (Sandbox Code Playgroud)

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

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