全部产品
Search
文档中心

云服务器 ECS:安装并配置 Workbench CLI 凭证

更新时间:Aug 21, 2026

在 Linux、macOS 或 Windows 本机安装 Workbench CLI 后,为 RAM 用户绑定最小权限策略、生成并配置 AccessKey 完成开箱即用的凭证接入;生产环境可切换为 RamRoleArn、CredentialsCmd 或 CredentialsURI,实现凭证自动刷新与最小权限。

使用限制

  • 目标实例操作系统:Workbench CLI 仅支持连接 Linux 实例(通过 SSH 协议),不支持连接 Windows 实例。

  • 本机操作系统:Workbench CLI 本身支持在 Linux、macOS(amd64 / arm64)、Windows(amd64)上运行。

  • 网络连通性:本机需能访问 *.aliyuncs.com 及 Workbench 后端 WebSocket 端点。

重要

Windows 实例目前不在 Workbench CLI 支持范围内。如需连接 Windows 实例,请使用 通过 Workbench 连接实例

步骤一:安装 Workbench CLI

根据本机操作系统选择安装命令。安装脚本会自动检测架构(amd64 / arm64),从 OSS CDN 下载二进制并校验 SHA256,安装到系统默认路径。

Linux 或 macOS

执行以下命令,安装最新版 Workbench CLI。

curl -fsSL https://workbench-cli.oss-cn-hangzhou.aliyuncs.com/install.sh | bash

安装完成后二进制位于 /usr/local/bin/workbench。macOS 上会自动重新签名并移除隔离属性。如果目标目录需要管理员权限,脚本会自动使用 sudo

Windows

在 PowerShell 中执行以下命令,安装最新版 Workbench CLI。

irm https://workbench-cli.oss-cn-hangzhou.aliyuncs.com/install.ps1 | iex

安装完成后二进制位于 C:\Program Files\workbench\,安装脚本会自动配置 PATH 环境变量。在桌面或远程桌面(RDP)会话下安装时,需注销并重新登录后 PATH 才会生效。

验证安装

安装完成后,执行以下命令验证:

workbench version

正常情况下会输出当前版本号、commit ID 与构建日期。如果提示 command not found,通常是 PATH 未生效导致,可执行以下操作:

  • Linux / macOS:重新打开终端窗口,或执行 source ~/.bashrc(或 ~/.zshrc)后重试。

  • Windows:关闭并重新打开 PowerShell 窗口,让新的 PATH 生效。

步骤二:准备具有 Workbench CLI 最小权限的 AccessKey

Workbench CLI 通过 AccessKey 调用阿里云 API。本步骤的目标是获得一个只具备 Workbench CLI 所需最小权限的 AccessKey,以便在下一步配置到本机 CLI。推荐流程为:创建 RAM 用户 → 授予最小权限 → 为该 RAM 用户创建 AccessKey

重要

不推荐使用主账号(云账号)的 AK/SK 配置 CLI。主账号 AK 拥有该账号下全部云资源的操作权限,一旦泄露会造成全量资产暴露。请始终使用具备最小权限的 RAM 用户 AK。

说明

如果您已有满足 Workbench CLI 最小权限的 RAM 用户,可跳过步骤 1~3,直接从步骤 4:为 RAM 用户创建 AccessKey开始。

  1. 创建 RAM 用户。登录 RAM 控制台,前往 身份管理 > 用户 页面,单击 创建用户。在创建页面填写 登录名称显示名称,然后单击 确定

    此时先不创建 AccessKey,AccessKey 在步骤 4 授权完成后统一创建。

  2. 创建自定义权限策略。在 RAM 控制台 权限管理 > 权限策略 页面,单击 创建权限策略,切换到 脚本编辑 模式,贴入以下 JSON,然后单击 确定

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ecs-workbench:*"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ecs:DescribeInstances",
            "ecs:DescribeCloudAssistantStatus",
            "ecs:StartTerminalSession"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": "ram:CreateServiceLinkedRole",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "ram:ServiceName": "workbench.ecs.aliyuncs.com"
            }
          }
        }
      ]
    }

    策略中各 Action 的用途如下:

    Action

    用途

    ecs:DescribeInstances

    workbench list ecs 查询实例列表。

    ecs:DescribeCloudAssistantStatus

    检查目标实例的云助手 Agent 状态。

    ecs:StartTerminalSession

    建立与 ECS 实例的终端会话。

    ecs-workbench:LoginECSInstance

    通过 Workbench 通道免密登录(connect、exec、upload、download 使用)。

    ecs-workbench:ChatMessages

    会话内 AI Agent 助手(/agent 模式)所需权限。

    ecs-workbench:EndSessions

    关闭 Workbench 会话(session close 与会话自动清理时调用)。

    ram:CreateServiceLinkedRole

    首次使用时创建 Workbench 服务关联角色,通过 Condition 限定仅允许创建 workbench.ecs.aliyuncs.com 服务的关联角色。

    上述策略默认授予所有实例的访问权限。如需收敛到指定实例,仅对支持实例级授权的操作使用实例 ARN(注意两类操作的 ARN 格式不同),并将它们拆分到独立 Statement 中修改 Resource

    // ecs-workbench:LoginECSInstance
    "Resource": "acs:ecs:<region>:<account-id>:ecs/<instance-id>"
    
    // ecs:DescribeInstances / DescribeCloudAssistantStatus / StartTerminalSession
    "Resource": "acs:ecs:<region>:<account-id>:instance/<instance-id>"
    说明

    ecs-workbench:ChatMessagesram:CreateServiceLinkedRole 不支持按实例 ARN 收敛,需保持 "Resource": "*"

  3. 将策略授予 RAM 用户。进入步骤 1 创建的 RAM 用户详情页,切换到 权限管理 页签,单击 新增授权,选择上一步创建的自定义策略并完成授权。具体操作请参见 管理 RAM 用户的权限

  4. 为 RAM 用户创建 AccessKey。在 RAM 用户详情页的 凭证管理 > AccessKey 页签,单击 创建 AccessKey。在弹出的页面选择 在 CLI 中使用 AccessKey,勾选 我确认必须创建 AccessKey,然后单击 继续创建。具体操作请参见 创建 AccessKey

    重要

    AccessKey Secret 仅在创建时显示一次,关闭页面后无法再次查看。请立即将 AccessKey ID 与 Secret 保存到密码管理器或密钥库;如遗失,只能重新创建。

    AccessKey 属于长期凭证,一旦泄露即被长期滥用。生产环境建议在步骤三配置完成后立即切换为 RamRoleArn 等自动刷新的凭证模式,具体请参见本文档的更多配置方式章节。

步骤三:在本机 CLI 中配置 AccessKey

执行以下命令,按提示依次输入步骤二获得的 AccessKey ID 与 AccessKey Secret。

workbench config

配置完成后,凭证保存在 ~/.workbench/config.json,文件权限自动设置为 0600(仅当前用户可读写)。文件内容示例:

{
  "current": "default",
  "profiles": {
    "default": {
      "mode": "AK",
      "access_key_id": "LTAI...",
      "access_key_secret": "..."
    }
  }
}

执行以下命令验证链路是否打通(将 cn-hangzhou 替换为您的实际地域):

workbench list ecs -r cn-hangzhou

正常情况下返回该地域下的实例列表。如果返回 InvalidAccessKeyIdNoPermission 等错误,请参见本文档的常见问题章节。

(可选)设置界面语言

Workbench CLI 支持中文(zh)与英文(en)界面语言,默认中文。执行以下命令切换:

workbench config set language en   # 切换到英文
workbench config set language zh   # 切换回中文

也可在 workbench config 交互式配置流程中设置,或直接编辑 ~/.workbench/config.json,在对应 Profile 内添加 language 字段:

{
  "current": "default",
  "profiles": {
    "default": {
      "mode": "AK",
      "language": "en"
    }
  }
}

修改后重新连接即生效,无需重启守护进程。

(可选)管理多个 Profile

如果您需要在多个阿里云账号或多套凭证之间切换,可使用 Profile 功能,无需反复重新配置。所有 Profile 都保存在同一个 ~/.workbench/config.json 中,由 current 字段标记当前活跃的 Profile。

workbench config --profile prod          # 创建或编辑名为 prod 的 Profile
workbench config list                    # 查看所有 Profile(* 标记当前活跃)
workbench config get --profile prod      # 查看指定 Profile 详情
workbench config switch --profile prod   # 切换当前活跃 Profile
workbench config delete --profile old    # 删除 Profile(不能删除当前活跃的 Profile)
workbench exec -i i-xxx -c "hostname" --profile prod   # 本次命令临时使用指定 Profile

config.json 的多 Profile 结构示例:

{
  "current": "default",
  "profiles": {
    "default": {
      "mode": "AK",
      "access_key_id": "LTAI...",
      "access_key_secret": "..."
    },
    "prod": {
      "mode": "RamRoleArn",
      "access_key_id": "LTAI...",
      "access_key_secret": "...",
      "ram_role_arn": "acs:ram::123456:role/prod",
      "role_session_name": "workbench"
    }
  }
}
说明

如果配置文件仍是旧的扁平格式(没有 profiles 字段),CLI 会在首次运行时自动迁移为新格式,原有凭证存入名为 default 的 Profile,无需手动操作。

更多配置方式

静态 AccessKey 属于长期凭证,一旦泄露即被长期滥用。生产环境或有更严格安全要求时,建议切换为以下四种模式之一:

模式

适用场景

配置命令

AK(本文步骤二~三)

静态 AccessKey,开发环境快速上手。

workbench config

StsToken

临时安全凭证(AccessKey + STS Token),适用于已有 STS 临时凭证的场景。

workbench config --mode StsToken

RamRoleArn

生产环境推荐:低权限 AK 扮演高权限 RAM 角色,STS 临时凭证自动刷新。

workbench config --mode RamRoleArn

CredentialsCmd

通过外部程序动态获取凭证,对接企业已有的凭据分发或密钥管理系统。

workbench config --mode CredentialsCmd

CredentialsURI

通过 HTTP 服务(元数据服务、Sidecar 等)动态获取凭证。

workbench config --mode CredentialsURI

使用 STS 临时凭证(StsToken)

直接使用通过 STS 获取的临时安全凭证(AccessKey ID + AccessKey Secret + STS Token)进行认证,适用于已持有临时凭证的场景。临时凭证有过期时间,过期后需重新配置;如需自动刷新,建议改用 RamRoleArn 模式。

workbench config --mode StsToken

按提示依次输入临时 AccessKey ID、AccessKey Secret 与 STS Token。~/.workbench/config.json 示例:

{
  "current": "default",
  "profiles": {
    "default": {
      "mode": "StsToken",
      "access_key_id": "STS.LTAI...",
      "access_key_secret": "...",
      "sts_token": "..."
    }
  }
}

使用 RAM 角色(RamRoleArn)

通过低权限 AccessKey 扮演高权限 RAM 角色,CLI 自动调用 STS AssumeRole 获取临时凭证并在过期前自动刷新。凭证不落盘为静态 AK,适合生产环境。

workbench config --mode RamRoleArn

按提示依次输入低权限 AK ID、Secret、要扮演的 RAM Role ARN(格式:acs:ram::<账号ID>:role/<角色名>)、会话标识(默认 workbench-session)。~/.workbench/config.json 示例:

{
  "current": "default",
  "profiles": {
    "default": {
      "mode": "RamRoleArn",
      "access_key_id": "LTAI...",
      "access_key_secret": "...",
      "ram_role_arn": "acs:ram::123456789:role/WorkbenchRole",
      "role_session_name": "workbench-session"
    }
  }
}

高级字段(如 expired_secondssts_regionexternal_id 用于跨账号防混淆代理人)可通过手动编辑 config.json 添加。STS 机制详见 什么是 STS

使用外部命令凭证(CredentialsCmd)

通过执行外部程序动态获取凭证,适用于对接企业已有凭据分发或密钥管理系统的场景。CLI 每次发起 API 请求前都会执行配置的命令,解析其 stdout 作为凭证。

workbench config --mode CredentialsCmd

按提示输入外部命令的完整路径与参数。外部命令的退出码必须为 0stdout 输出为下列两种 JSON 之一:

// 静态 AccessKey
{
  "mode": "AK",
  "access_key_id": "<AccessKeyID>",
  "access_key_secret": "<AccessKeySecret>"
}

// STS 临时凭证
{
  "mode": "StsToken",
  "access_key_id": "<AccessKeyID>",
  "access_key_secret": "<AccessKeySecret>",
  "sts_token": "<SecurityToken>"
}

外部程序只需按上述 JSON 格式向标准输出返回凭据即可,可对接您已有的凭据分发工具或密钥管理系统。

使用凭证 URI(CredentialsURI)

通过向 HTTP 服务发起 GET 请求获取临时凭证,适用于自建凭证分发服务、ECS 实例元数据服务、Sidecar 凭证端点等场景。CLI 会在凭证过期前自动重新获取。

workbench config --mode CredentialsURI

按提示输入凭证服务的 HTTP 或 HTTPS 地址。凭证服务必须返回 HTTP 200,响应体为:

{
  "Code": "Success",
  "AccessKeyId": "<AccessKeyID>",
  "AccessKeySecret": "<AccessKeySecret>",
  "SecurityToken": "<SecurityToken>",
  "Expiration": "2026-01-01T12:00:00Z"
}
重要

Code 字段必须严格为 Success(区分大小写);Expiration 使用 ISO 8601 格式,CLI 会根据该时间在过期前自动重新获取凭证。

~/.workbench/config.json 示例:

{
  "current": "default",
  "profiles": {
    "default": {
      "mode": "CredentialsURI",
      "credentials_uri": "http://localhost:8080/credentials"
    }
  }
}

升级 Workbench CLI

Workbench CLI 支持一键自升级。执行以下命令即可升级到最新版本:

workbench upgrade

升级过程会自动下载并校验最新版本的二进制文件,并替换当前版本。

说明

如果二进制安装在需要管理员权限的目录(例如 Linux/macOS 的 /usr/local/bin),请使用 sudo workbench upgrade

卸载

Workbench CLI 不会注册系统服务或修改系统配置,卸载只需停止守护进程、删除二进制并(可选)删除本机配置目录。

Linux 或 macOS

依次执行以下命令:

workbench daemon stop
sudo rm -f /usr/local/bin/workbench
rm -rf ~/.workbench

其中第三条命令(删除 ~/.workbench)为可选,用于清除所有本机凭证与配置文件。

Windows

在 PowerShell 中依次执行以下命令:

workbench daemon stop
Remove-Item "$env:ProgramFiles\workbench" -Recurse -Force

# 删除云助手场景安装时创建的 shim
Remove-Item "$env:SystemRoot\System32\workbench.cmd" -Force -ErrorAction SilentlyContinue

Remove-Item "$env:USERPROFILE\.workbench" -Recurse -Force

# 清理安装脚本(远程桌面场景)添加到用户 PATH 的 workbench 路径
$path = [Environment]::GetEnvironmentVariable("Path", "User")
if ($path -match "workbench") {
    $cleaned = ($path -split ";" | Where-Object { $_ -notmatch "workbench" }) -join ";"
    [Environment]::SetEnvironmentVariable("Path", $cleaned, "User")
}

其中删除 .workbench 目录为可选,用于清除所有本机凭证与配置文件。

说明

上述命令仅清理本机 CLI 与本机凭证。云端 RAM 用户与 AccessKey 不会被删除,如需一并清理,请到 RAM 控制台删除对应 RAM 用户或禁用 AccessKey。

常见问题

安装完成后执行 workbench 报 command not found

原因:安装脚本追加到 PATH 的目录在当前 shell 会话中尚未生效。

解决方案

  • Linux / macOS:重新打开终端,或执行 source ~/.bashrc(或 ~/.zshrc),或直接使用绝对路径 /usr/local/bin/workbench version 验证。

  • Windows:关闭并重新打开 PowerShell 窗口。

执行 workbench config 报配置文件权限错误

原因:CLI 会拒绝权限过宽的 ~/.workbench/config.json(例如权限为 0644 或组可读),避免凭证被同机器其他用户读取。

解决方案:在 Linux / macOS 上执行以下命令修正权限:

chmod 600 ~/.workbench/config.json

workbench list ecs 报 InvalidAccessKeyId.NotFound 或 IncompleteSignature

原因:通常是以下之一:

  • 配置时输入的 AccessKey ID 或 Secret 有误(前后有空格、复制不全等)。

  • 对应 AccessKey 已在 RAM 控制台禁用或删除。

解决方案:重新执行 workbench config,确认 AccessKey ID 与 Secret 为同一对、完整且无多余空格;或在 RAM 控制台确认 AccessKey 状态为 已启用

相关文档