如何为 Amazon EC2 Linux 实例添加具有 SSH 访问权限的新用户账户?

2 分钟阅读
0

我想添加新用户账户,以便使用 SSH 连接到 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。

简短描述

每个 Amazon EC2 Linux 实例启动时,系统会默认提供一个对实例具有管理访问权限的用户账户。如果多个用户需要访问实例,为安全起见,每个用户最好使用不同的账户。

您可以使用 cloud-init 和用户数据快速执行这些操作。有关更多信息,请参阅如何使用 cloud-init 和用户数据将具有 SSH 访问权限的新用户账户添加到 EC2 实例?

解决方法

为新用户账户创建密钥对

使用 Amazon EC2 控制台创建密钥对

1.打开 Amazon EC2 控制台

2.选择网络与安全密钥对

3.选择创建密钥对

4.对于名称,输入密钥对的具体名称。Amazon EC2 会将公钥与您指定的密钥名称绑定。密钥名称最多包含 255 个 ASCII 字符,首尾无空格。

5.对于密钥对类型,选择 RSAED25519

6.对于私钥文件格式,选择相应的格式保存私钥。选择 pem,以 OpenSSH 可用的格式保存私钥。选择 ppk,以 PuTTY 可用的格式保存私钥。

7.要为公钥添加标签,请选择添加标签,然后输入标签的密钥和值。对每个标签重复此操作。

8.选择创建密钥对

9.系统会自动下载私钥文件。基本文件名是您指定的密钥对名称。文件扩展名由您选择的文件格式决定。将私钥文件保存在安全的地方。

10.如果您在 macOS 或 Linux 计算机上使用 SSH 客户端连接 Linux 实例,请运行以下命令:

chmod 400 key-pair-name.pem

前面的命令设置私钥文件的权限,因此只有您才能读取。如果未设置相应的权限,则无法使用此密钥对连接实例。有关更多信息,请参阅错误: 未保护的私钥文件

使用 Amazon 命令行界面 (Amazon CLI) 创建密钥对

**注意:**如果您在运行 Amazon CLI 命令时收到错误,请确保使用最新的 Amazon CLI 版本

1.使用 create-key-pair 命令生成密钥对,并将私钥保存到 pem 文件。

对于 --key-name,指定公钥的名称。名称最多包含 255 个 ASCII 字符。

对于 --key-type,指定 rsaed25519。如果您不包含 --key-type 参数,将默认创建 rsa 密钥。请注意,Windows 实例不支持 ED25519 密钥。

对于 --key-format,指定 pemppk。如果您不包含 --key-format 参数,将默认创建 pem 文件。

**--query “KeyMaterial”**将私钥内容打印到输出。

--output text > my-key-pair.pem 将私钥内容保存到带指定扩展名的文件中。扩展名可以是 pemppk。私钥的名称可与公钥名称不同,但为方便起见,请使用相同的名称。

aws ec2 create-key-pair \
    --key-name my-key-pair \
    --key-type rsa \
    --key-format pem \
    --query "KeyMaterial" \
    --output text > my-key-pair.pem>

2.如果您在 macOS 或 Linux 计算机上使用 SSH 客户端连接 Linux 实例,请运行以下命令:

chmod 400 key-pair-name.pem

前面的命令设置私钥文件的权限,因此只有您才能读取。如果未设置相应的权限,则无法使用此密钥对连接实例。有关更多信息,请参阅错误: 未保护的私钥文件

为 EC2 Linux 实例添加新用户

1.使用 SSH 连接 Linux 实例

2.使用 adduser 命令,为 EC2 实例添加新用户账户(用新账户名称替换 new_user)。下例在实例的 /etc/passwd 文件中创建一个关联的组、主目录和条目。

$ sudo adduser new_user

某些配置可能不会默认创建主目录。请验证主目录是否已创建,然后再继续操作。

**注意:**如果将 new_user 添加到 Ubuntu 实例,请包含 --disabled-password 选项,以免为新账户添加密码:

$ sudo adduser new_user --disabled-password

3.将安全环境更改为 new_user 账户,让您创建的文件夹和文件具有正确的权限:

$ sudo su - new_user

**注意:**运行 sudo su - new_user 命令时,命令 Shell 提示符顶部的名称会发生更改,以反映 Shell 会话的新用户账户。

4.在 new_user 主目录中创建一个 .ssh 目录:

$ mkdir .ssh

5.使用 chmod 命令,将 .ssh 目录的权限更改为 700。更改权限会限制访问权限,因此只有 new_user 才能读取、写入或打开 .ssh 目录。

$ chmod 700 .ssh

6.使用 touch 命令,在 .ssh 目录中创建 authorized_keys 文件:

$ touch .ssh/authorized_keys

7.使用 chmod 命令,将 .ssh/authorized_keys 文件的权限更改为 600。更改文件权限会限制 new_user 的读写权限。

$ chmod 600 .ssh/authorized_keys

检索密钥对的公钥

根据您的配置使用相应的方法,检索密钥对的公钥:

验证密钥对的指纹

导入您自己的公钥或检索密钥对的公钥后,请按照验证密钥对的指纹步骤操作。

更新并验证新用户账户的凭证

检索公钥后,确认您有权将公钥添加到此账户的 .ssh/authorized_keys 文件:

1.在 Append 模式下运行 Linux cat 命令:

$ cat >> .ssh/authorized_keys

2.将公钥粘贴到 .ssh/authorized_keys 文件中,然后按 Enter

**注意:**对于大多数 Linux 命令行界面,Ctrl+Shift+V 组合键会将剪贴板的内容粘贴到命令行窗口中。对于 PuTTY 命令行界面,右键单击将剪贴板的内容粘贴到 PuTTY 命令行窗口中。

3.按住 Ctrl+D,退出 cat,并返回命令行会话提示窗口。

验证新用户能否使用 SSH 连接 EC2 实例

1.在本地计算机的命令行提示符后运行以下命令:

$ ssh -i /path/new_key_pair.pem new_user@public_dns_name_of_EC2_Linux_instance

要在 Windows 中使用 SSH 连接 EC2 Linux 实例,请按照在 Windows 中使用 PuTTY 连接 Linux 实例步骤操作。

注意: 如果您在尝试连接时收到错误,请参阅排查实例连接问题

2.在实例的命令行中运行 id 命令,查看为 new_user 账户创建的用户和组信息:

$ id

id 命令返回类似于以下内容的信息:

uid=1004(new_user) gid=1004(new_user) groups=1004(new_user)

3.将私钥文件分发给新用户。

相关信息

管理 Linux 实例上的用户

AWS 官方
AWS 官方已更新 2 年前