Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
如何使用 AWS CLI 通过 MFA 令牌验证对 AWS 资源的访问权限?
我想使用多重身份验证 (MFA) 令牌配合 AWS 命令行界面 (AWS CLI) 来验证对我的 AWS 资源的访问权限。
简短描述
您可以为每个 AWS Identity and Access Management (IAM) 用户激活最多八个 MFA 设备。
**注意:**为根用户激活 MFA 只会影响根用户凭证。您的 AWS 账户中的每个 IAM 身份都有自己的 MFA 配置。
要激活 MFA,请参阅使用 MFA 保护您的根用户登录安全和 IAM 中的 MFA。
解决方法
要使用 AWS CLI 对 AWS 资源进行身份验证,请使用 API 操作 GetSessionToken 获取临时凭证。
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
MFA 设备 ARN
要获取 MFA 设备的 ARN,请完成以下步骤:
- 打开 IAM 控制台。
- 在导航窗格中,选择 Users(用户),然后选择 IAM 用户。
- 在 Summary(摘要)页面上,选择 Security credentials(安全凭证)选项卡。
- 在 Assigned MFA device(已分配的 MFA 设备)中,复制 MFA 设备的 ARN。
使用 AWS CLI 获取临时凭证
运行 get-session-token 命令:
aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
输出示例:
{ "Credentials": { "SecretAccessKey": "secret-access-key", "SessionToken": "temporary-session-token", "Expiration": "expiration-date-time", "AccessKeyId": "access-key-id" } }
**重要事项:**确保 MFA 设备的序列号、令牌和 ARN 正确无误,否则您可能会收到类似于以下内容的错误消息:
“An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code.Please verify your MFA serial number is valid and associated with this user.”(调用 GetSessionToken 操作时出错 (AccessDenied):MultiFactorAuthentication 失败,无法验证 MFA 代码。请验证您的 MFA 序列号是否有效并与此用户相关联。)
为了对您的 MFA 硬件设备进行身份验证,序列号通常位于设备背面,其值类似于 GAHT12345678。要对您的 MFA 虚拟设备进行身份验证,该值类似于 arn:aws:iam::123456789012:mfa/user。
**注意:**AWS CLI 仅支持使用虚拟或硬件 MFA 设备进行 MFA 身份验证。AWS CLI 不支持使用 FIDO 安全密钥进行 MFA 身份验证。
有关详细信息,请参阅在 AWS CLI 或 AWS API 中分配 MFA 设备。
使用临时凭证将其值导出到环境变量
为您的操作系统 (OS) 运行以下命令:
Linux
export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output
Windows
set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output
再次运行 get-session-token 命令之前,请运行以下命令来取消设置环境变量:
Linux
unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY unset AWS_SESSION_TOKEN
Windows
set AWS_ACCESS_KEY_ID= set AWS_SECRET_ACCESS_KEY= set AWS_SESSION_TOKEN=
使用带有命名配置文件的临时凭证
您还可以使用命名配置文件来指定需要 MFA 身份验证的命令。在用户主目录的 .aws 文件夹下的 credentials(凭证)文件中,添加新的配置文件配置以发出经 MFA 身份验证的命令。
配置文件配置示例:
[mfa]aws_access_key_id = example-access-key-as-in-returned-output aws_secret_access_key = example-secret-access-key-as-in-returned-output aws_session_token = example-session-token-as-in-returned-output
凭证到期后,再次运行 get-session-token 命令,然后将返回值导出到环境变量或配置文件配置。
最佳做法是在后台运行脚本或 cron 作业,以检查 get-session-token 命令的输出是否过期。如果 MFA 令牌已过期,请确保脚本或 cron 作业提示重新进行身份验证。
当您使用命名配置文件进行身份验证时,指定 —profile 选项,然后指定配置文件名称,以验证 API 调用是否使用 MFA 进行身份验证。
相关信息

相关内容
- AWS 官方已更新 4 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 5 个月前
- AWS 官方已更新 3 年前