在 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开始。
创建 RAM 用户。登录 RAM 控制台,前往 页面,单击 创建用户。在创建页面填写 登录名称、显示名称,然后单击 确定。
此时先不创建 AccessKey,AccessKey 在步骤 4 授权完成后统一创建。
创建自定义权限策略。在 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:DescribeInstancesworkbench 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:ChatMessages与ram:CreateServiceLinkedRole不支持按实例 ARN 收敛,需保持"Resource": "*"。将策略授予 RAM 用户。进入步骤 1 创建的 RAM 用户详情页,切换到 权限管理 页签,单击 新增授权,选择上一步创建的自定义策略并完成授权。具体操作请参见 管理 RAM 用户的权限。
为 RAM 用户创建 AccessKey。在 RAM 用户详情页的 页签,单击 创建 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正常情况下返回该地域下的实例列表。如果返回 InvalidAccessKeyId、NoPermission 等错误,请参见本文档的常见问题章节。
(可选)设置界面语言
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 # 本次命令临时使用指定 Profileconfig.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,开发环境快速上手。 |
|
StsToken | 临时安全凭证(AccessKey + STS Token),适用于已有 STS 临时凭证的场景。 |
|
RamRoleArn | 生产环境推荐:低权限 AK 扮演高权限 RAM 角色,STS 临时凭证自动刷新。 |
|
CredentialsCmd | 通过外部程序动态获取凭证,对接企业已有的凭据分发或密钥管理系统。 |
|
CredentialsURI | 通过 HTTP 服务(元数据服务、Sidecar 等)动态获取凭证。 |
|
使用 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_seconds、sts_region、external_id 用于跨账号防混淆代理人)可通过手动编辑 config.json 添加。STS 机制详见 什么是 STS。
使用外部命令凭证(CredentialsCmd)
通过执行外部程序动态获取凭证,适用于对接企业已有凭据分发或密钥管理系统的场景。CLI 每次发起 API 请求前都会执行配置的命令,解析其 stdout 作为凭证。
workbench config --mode CredentialsCmd按提示输入外部命令的完整路径与参数。外部命令的退出码必须为 0,stdout 输出为下列两种 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.jsonworkbench list ecs 报 InvalidAccessKeyId.NotFound 或 IncompleteSignature
原因:通常是以下之一:
配置时输入的 AccessKey ID 或 Secret 有误(前后有空格、复制不全等)。
对应 AccessKey 已在 RAM 控制台禁用或删除。
解决方案:重新执行 workbench config,确认 AccessKey ID 与 Secret 为同一对、完整且无多余空格;或在 RAM 控制台确认 AccessKey 状态为 已启用。
相关文档
通过 Workbench CLI 连接实例:父节点,包含工具定位、能力矩阵与快速开始。
使用 Workbench CLI 管理 ECS 实例:各命令详解与常见场景。
在 AI Agent 中使用 Workbench CLI 操作 ECS 实例:将 Workbench CLI 集成到 AI 编程工具。