为了安全,很多账号都启用了二步认证,mfa,也就是你除了需要输入正确的账号密码以外,你还需要输入一个6位数字,这个数字是由硬件或者软件(google authenticator)绑定账号后生成,这样的话即使账号密码丢失也没事
并且,启用mfa以后,你不可以直接使用export AWS_PROFILE=jeremy-account
如果我们.aws/credentials 的文件长这个样子:
1 2 3 |
[Jeremy-account] aws_access_key_id=mykey aws_secret_access_key=myaccesskey |
我们需要在我们的.aws/config中增加如下内容:
1 2 3 4 |
[profile jeremy-mfa] role_arn = arn:aws:iam::myaccountid:role/anotherrole source_profile = jeremy-account mfa_serial = arn:aws:iam::myaccountid:mfa/jeremy |
然后我们使用export AWS_PROFILE=jeremy-mfa
然后我们需要认证一次,就可以使用aws cli了,但是这个过一段时间就会让你重新输入token
解决方案就是:使用session来代替,这样的话,最长可以允许我们36小时不需要重新输入:
首先: (注意,这个地方不是mfa,而是就的cred )
1 |
export AWS_PROFILE=jeremy-account |
然后:
1 |
aws sts get-session-token --serial-number arn:aws:iam::myaccountnumber:mfa/jeremy --duration-seconds 129600 --token-code 111111 |
其中,myaccountnumber需要替换成你的,这部分serial number你可以在aws console中mfa部分找到
这条命令会返回给你一串字符
1 2 3 4 5 6 7 8 |
{ "Credentials": { "AccessKeyId": "abc", "SecretAccessKey": "cba", "SessionToken": "sdfadfa123455", "Expiration": "2021-04-11T20:45:11+00:00" } } |
然后我们执行如下命令把返回值设置到环境变量就可以了
1 2 3 |
export AWS_ACCESS_KEY_ID=whatwegetabove export AWS_SECRET_ACCESS_KEY=whatwegetabove export AWS_SESSION_TOKEN=whatwegetabove |
然后你就可以36小时畅通无阻了
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021