执行AWS CLI命令遇SignatureDoesNotMatch签名过期错误求解决方案
AWS CLI SignatureDoesNotMatch 错误排查方案
错误信息
pierre@HAL9000:~# aws sts get-caller-identity An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Signature expired: 20230822T072529Z is now earlier than 20230822T193257Z (20230822T194757Z - 15 min.)
已确认信息
- 已更新至最新AWS CLI版本
~/.aws/credentials和~/.aws/config内密钥正确,同配置在其他机器可正常运行- 查阅过AWS签名V4官方排障文档未解决
排查思路与解决方案
1. 强制同步系统UTC时间
AWS签名验证要求本地时间与UTC时间偏差不超过15分钟,这是此类错误最常见原因:
- 查看当前UTC时间:
date -u - 对比实际UTC时间,偏差超15分钟则同步:
- systemd系统(Ubuntu 16.04+/CentOS 7+):
sudo timedatectl set-ntp true - 传统sysvinit系统:
sudo ntpdate pool.ntp.org
- systemd系统(Ubuntu 16.04+/CentOS 7+):
2. 排除代理/网络中间件干扰
代理、VPN或防火墙可能篡改请求时间戳:
- 临时关闭代理重试:
unset HTTP_PROXY HTTPS_PROXY aws sts get-caller-identity - 检查网络设备是否有修改
Date/X-Amz-Date请求头的规则
3. 清理冲突的AWS环境变量
环境变量可能覆盖本地配置文件:
- 列出所有AWS相关变量:
env | grep AWS_ - 清除不符的变量:
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
4. 修复凭证文件权限
AWS CLI要求凭证文件权限严格为600:
- 检查权限:
ls -l ~/.aws/ - 修改权限:
chmod 600 ~/.aws/credentials ~/.aws/config
5. 显式指定配置文件测试
排除配置文件读取异常:
aws sts get-caller-identity --profile <你的配置文件名>
6. 强制使用UTC时区执行命令
时区配置错误可能导致时间戳异常:
TZ=UTC aws sts get-caller-identity
内容的提问来源于stack exchange,提问作者Pierre
相关产品推荐
相关产品推荐

