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

跨账号SSM启动会话遇“Target is not connected”问题及无缝访问需求

跨AWS账号通过SSM启动会话的无缝实现方案

问题背景

执行命令:
aws ssm start-session --target i-yyyaf4692d801d1xx --region ap-south-1
返回错误:Target is not connected。原因是目标实例属于同一组织内的账号B,无法直接添加到账号A的Systems Manager清单中。已确认:

  • 账号A的用户权限经IAM模拟器验证有效
  • 实例ID唯一且仅关联账号B
  • 账号B本地用户可正常访问该实例

已知通过STS Assume Role可以实现跨账号访问,但需要无需手动生成临时凭证的无缝方案。

无缝实现方法

1. 配置账号B的信任角色

在账号B中创建一个IAM角色(比如SSMCrossAccountAccessRole),信任策略允许账号A的用户或角色进行Assume Role:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::账号A-ID:user/你的用户名"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

同时给该角色附加AmazonSSMFullAccess(或仅包含ssm:StartSession、ssm:DescribeSessions等最小权限的自定义策略),确保能执行SSM会话操作。

2. 配置AWS CLI自动切换角色

在本地AWS CLI的配置文件(~/.aws/config)中添加新配置项,自动获取账号B的临时凭证:

[profile account-b-ssm]
role_arn = arn:aws:iam::账号B-ID:role/SSMCrossAccountAccessRole
source_profile = account-a
region = ap-south-1

其中source_profile是你本地已配置的账号A的CLI配置文件名称。

3. 直接执行跨账号SSM会话命令

无需手动生成临时凭证,直接用以下命令访问账号B的实例:
aws ssm start-session --target i-yyyaf4692d801d1xx --profile account-b-ssm

4. 脚本封装(可选)

如果需要更简化操作,可编写Shell脚本(比如ssm-cross-account.sh):

#!/bin/bash
TARGET_INSTANCE=$1
PROFILE="account-b-ssm"
REGION="ap-south-1"

aws ssm start-session --target $TARGET_INSTANCE --profile $PROFILE --region $REGION

赋予脚本执行权限:
chmod +x ssm-cross-account.sh
使用时直接运行:
./ssm-cross-account.sh i-yyyaf4692d801d1xx

关键说明

  • 确保账号A的用户拥有sts:AssumeRole权限,允许访问账号B的目标角色ARN
  • 遵循最小权限原则,避免给角色附加过度宽泛的权限
  • CLI配置文件会自动处理临时凭证的获取和刷新,无需手动干预

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:50:40