3 个不稳定版本
0.3.2 | 2023年2月15日 |
---|---|
0.3.1 | 2023年2月13日 |
0.3.0 |
|
0.2.1 | 2023年2月12日 |
2296 在 命令行工具 中
每月 27 次下载
40KB
986 行
awscli-mfa
用于在 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 子命令。
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