我想再创建一个可以通过 SSH 连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例的用户。
包括用于完成以下任务的用户数据命令:
重要事项: 在更改实例之前,请查看以下内容:
完成以下步骤:
使用 SSH 或会话管理器登录实例。
要确认已安装 cloud-init,请运行以下命令:
$ cloud-init -v
如果该命令返回错误,请运行以下命令在您的 Linux 发行版上安装实例:
对于基于 Debian 的实例
$ sudo apt-get install cloud-init
对于基于 RPM 的实例
sudo dnf install cloud-init
对于 Suse 实例
zypper install cloud-init
确认安装 cloud-init 后,继续停止该实例。 **注意:**如果 Stop(停止)操作不可用,说明实例已停止或其根设备是实例存储卷。
使用您的私钥生成公钥以连接到新用户。 **注意:**您必须有密钥对或私钥才能获得公钥。要创建密钥对,请参阅为您的 Amazon EC2 实例创建密钥对。对于 SSH 安全,最佳做法是通过 EC2 控制台或第三方工具创建密钥对。 要检索公钥,请运行以下命令。如果您的私钥有密码,请在出现提示时输入该密码。
$ ssh-keygen -f <private_key_file> -y
将您的公钥插入以下命令,然后使用此命令更新用户数据字段: 选择实例。 在导航窗格中,选择 Actions(操作),然后选择 Instance Settings(实例设置)。 选择 Edit User Data(编辑用户数据),然后将脚本粘贴到字段中。 **注意:**将占位符 username 替换为您计划使用的用户名。对于 ssh-rsa AB3nzExample,输入公钥。如果您使用的是 Debian 实例,请将组值从 wheel 更改为 sudo:
#cloud-config cloud_final_modules: - [users-groups,always] users: - name:username groups: [ wheel ] shell: /bin/bash sudo: ["ALL=(ALL) NOPASSWD:ALL"] ssh-authorized-keys: - ssh-rsa AB3nzExample
前面的命令创建了一个具有无限制访问权限的用户。要阻止用户访问 sudo,请将 sudo 的值设置为 false。有关详细信息,请参阅 cloud-init 网站上的 Cloud config examples(云配置示例)。 **注意:**默认情况下,cloud-init 指令仅在实例启动时运行。但是,当使用此用户数据脚本时,cloud-init 会在每次实例重启时向该实例添加公钥。如果删除用户数据脚本,则会恢复默认功能。
选择 Save(保存)。
选择 Actions(操作),选择 Instance State(实例状态),然后选择 Start(启动)。
当实例达到 running(正在运行)状态时,请以新用户身份登录。新用户的默认行为与 ec2-user 相同。 **注意:**使用 ModifyInstanceAttribute API 操作来修改实例的用户数据。创建 AWS Identity and Access Management (IAM) 策略来限制此操作。
Display your key pair
如何为 Amazon EC2 Linux 实例添加具有 SSH 访问权限的新用户账户?