You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在类似SSH Agent转发的AWS凭证代理与临时凭证传递方案?

实现类似SSH Agent Forwarding的AWS凭证代理方案

针对你提出的需求——在通过SSM/EC2 Instance Connect连接远程EC2时,无需重复MFA验证,自动传递临时AWS凭证并实现透明轮换——以下是几种可行的实现方案:

一、本地凭证代理 + SSM端口转发(最接近SSH Agent Forwarding的方案)

这个方案的核心是将远程会话中的AWS SDK/CLI请求代理回本地,利用本地已验证(含MFA)的凭证生成临时密钥,全程本地凭证不会离开本地系统,且自动轮换对用户透明。

具体步骤:

  1. 本地启动AWS凭证代理服务
    使用工具(如aws-vault)启动本地凭证代理,它会以你本地已通过MFA验证的身份处理远程的AWS请求签名:

    aws-vault proxy --port 8100
    

    该服务会在本地8100端口监听,返回临时凭证给远程请求。

  2. 通过SSM建立端口转发
    连接EC2实例时,将远程的8100端口转发到本地的8100端口:

    aws ssm start-session --target <你的EC2实例ID> --document-name AWS-StartPortForwardingSession --parameters '{"portNumber": ["8100"], "localPortNumber": ["8100"]}'
    
  3. 配置远程会话使用代理获取凭证
    在远程EC2会话中,创建临时AWS配置文件并设置环境变量,让AWS SDK/CLI通过代理获取凭证:

    # 设置临时配置文件路径
    export AWS_CONFIG_FILE=/tmp/aws-proxy-config
    # 写入配置内容,指定通过本地代理获取凭证
    cat > /tmp/aws-proxy-config << EOF
    [default]
    credential_process = curl -s http://localhost:8100/credentials
    EOF
    

    此后远程会话中的所有AWS操作,都会自动通过代理获取本地生成的临时凭证,且凭证轮换由本地代理自动处理,无需用户干预。

二、自动化临时凭证注入(简单但需处理过期)

如果不需要完全的代理模式,可以在连接远程会话时,自动将本地生成的临时凭证注入到远程环境:

具体步骤:

  1. 本地生成临时凭证
    利用本地已验证的身份生成带有效期的临时凭证(若需MFA,只需在本地验证一次):

    aws sts get-session-token --serial-number <你的MFA设备ARN> --token-code <MFA验证码> > /tmp/temp-creds.json
    
  2. 通过SSM会话注入环境变量
    连接EC2时,将临时凭证作为环境变量传入远程会话:

    # 提取凭证信息
    export AWS_ACCESS_KEY_ID=$(jq -r '.Credentials.AccessKeyId' /tmp/temp-creds.json)
    export AWS_SECRET_ACCESS_KEY=$(jq -r '.Credentials.SecretAccessKey' /tmp/temp-creds.json)
    export AWS_SESSION_TOKEN=$(jq -r '.Credentials.SessionToken' /tmp/temp-creds.json)
    
    # 通过SSM启动会话并注入环境变量
    aws ssm start-session --target <你的EC2实例ID> --parameters "environmentVariables={\"AWS_ACCESS_KEY_ID\":\"$AWS_ACCESS_KEY_ID\",\"AWS_SECRET_ACCESS_KEY\":\"$AWS_SECRET_ACCESS_KEY\",\"AWS_SESSION_TOKEN\":\"$AWS_SESSION_TOKEN\"}"
    

    此方案的缺点是临时凭证有有效期(默认12小时),过期后需要重新生成并注入,但优点是无需额外代理服务。

三、SSM会话文档自定义初始化(进阶自动化)

你可以创建自定义SSM会话文档,在启动远程会话时自动完成凭证代理配置或临时凭证注入,进一步简化操作:

  • 编写SSM文档,包含端口转发配置和远程环境变量设置逻辑
  • 连接时指定该自定义文档,实现一键完成所有配置

方案对比

方案安全性透明性复杂度适用场景
本地代理+端口转发最高(本地凭证不离开本地)完全透明(自动轮换)中等长期远程会话、频繁AWS操作
临时凭证注入中等(临时凭证存在于远程环境变量)需手动/脚本处理过期低短期会话、简单AWS操作

内容的提问来源于stack exchange,提问作者benjimin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:00:34