#aws-cli #mfa #aws #session-token #2fa #config-file #aws-sts

bin+lib awsmfa

用于在 awscli 中进行多因素认证(MFA)过程的自动化工具

3 个不稳定版本

0.3.2 2023年2月15日
0.3.1 2023年2月13日
0.3.0 2023年2月13日
0.2.1 2023年2月12日

2296命令行工具

每月 27 次下载

MIT 许可证

40KB
986

awscli-mfa

Version License Build

用于在 awscli 中进行多因素认证(MFA)过程的自动化工具。它生成一次性密码,获取 AWS STS 会话令牌,并自动更新 AWS 凭据(~/.aws/credentials)和配置(~/.aws/config)文件,您可以在不进行复杂过程的情况下运行任何 aws 命令。

安装

您可以通过 cargo install 命令安装 awsmfa

$ cargo install awsmfa

或从 发布页面 下载二进制文件。

使用方法

1. 配置配置文件

首先,确保您要使用的配置文件在 AWS 配置(~/.aws/config)中已定义了 mfa_serial。有关 AWS 配置和 mfa_serial 的更多详细信息,请参阅官方文档

[default]
region=us-east-1
output=json
mfa_serial=arn:aws:iam::123456789012:mfa/kaicoh
...

[profile alpha]
region=ap-northeast-1
output=json
mfa_serial=arn:aws:iam::999999999999:mfa/alpha
...

然后,在 ~/.aws 目录中创建 awsmfa.yml 并为每个 MFA 设备设置密钥。

secrets:
  - profile: default
    value: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01
  - profile: alpha
    value: ZYXWVUTSRQPONMLKJIHGFECDBA9876543210ZYXWVUTSRQPONMLKJIHGFECDBA98

您可以在 AWS 控制台中为该 MFA 设备注册过程中获取每个 MFA 设备的密钥。如果您需要在该过程中生成一些 MFA 代码,请运行 otp 子命令

How to get secret

2. 运行命令

$ awsmfa --profile alpha --duration 43200
New credentials is available as profile "alpha-mfa".
It is valid until 2023-01-31 09:00:00.

此命令生成一次性密码,获取 AWS STS 会话令牌,并内部更新 AWS 凭据(~/.aws/credentials)和配置(~/.aws/config)文件。之后,新的凭据和配置将保存为 [profile]-mfa

~/.aws/credentials

$ cat ~/.aws/credentials
...

[alpha-mfa] <= The command creates this.
aws_access_key_id=ZZZZZZZZZZZZZZZZZZZZ
aws_secret_access_key=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
aws_session_token=aaaaaaaaa.....

~/.aws/config

$ cat ~/.aws/config
...

[profile alpha-mfa] <= The command creates this.
region=ap-northeast-1
output=json

选项

名称 简称 必需 类型 描述
profile p 字符串 执行 aws-sts get-session-token 动作的配置文件名称。如果没有提供,则使用 default
duration d 数字 生成的凭据持续时间的秒数。

3. 使用配置文件选项运行任何 aws 命令

$ aws s3 ls --profile alpha-mfa
...

子命令

此二进制文件有一些子命令用于配置或操作与 MFA 相关的过程。

otp

一旦您配置了,您就可以从这个命令生成MFA代码(=一次性密码)。

$ awsmfa otp --profile alpha --clip
123456

选项

名称 简称 必需 类型 描述
profile p 字符串 配置文件中的配置文件名。如果没有提供,则使用default
clip c bool 是否将生成的MFA代码复制到剪贴板。

ls

显示从~/.aws/awsmfa.yml中的当前配置。

$ awsmfa ls
[profile default]
secret	: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01

[profile alpha]
secret	: ZYXWVUTSRQPONMLKJIHGFECDBA9876543210ZYXWVUTSRQPONMLKJIHGFECDBA98

set

将MFA设备设置为~/.aws/awsmfa.yml

$ awsmfa set \
> --profile beta \
> --secret 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQR
Save the secret key for profile "beta" successfully.

$ awsmfa ls
[profile default]
secret	: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01

[profile alpha]
secret	: ZYXWVUTSRQPONMLKJIHGFECDBA9876543210ZYXWVUTSRQPONMLKJIHGFECDBA98

[profile beta]
secret	: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQR

选项

名称 简称 必需 类型 描述
profile p yes 字符串 配置文件中的配置文件名。
secret s yes 字符串 MFA设备的密钥。

rm

~/.aws/awsmfa.yml中删除MFA设备。

$ awsmfa rm --profile beta
Remove the secret key for profile "beta" successfully.

选项

名称 简称 必需 类型 描述
profile p yes 字符串 配置文件中的配置文件名。

许可证

本软件根据MIT许可证发布。

依赖关系

~22–38MB
~688K SLoC