すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Workbench CLI のインストールと認証情報の設定

最終更新日:Sep 04, 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 を使用したインスタンスへの接続」をご参照ください。

ステップ 1: 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

正常に完了すると、コマンドは現在のバージョン番号、コミット ID、およびビルド日を出力します。メッセージ command not found が表示された場合は、通常、PATH が有効になっていません。以下の操作を実行できます。

  • Linux / macOS:新しいターミナルウィンドウを開くか、 source ~/.bashrc (または ~/.zshrc) を実行して再試行します。

  • Windows:PowerShell ウィンドウを閉じて再度開き、新しい PATH を有効にします。

ステップ 2: Workbench CLI 用の最小権限を持つ AccessKey の準備

Workbench CLI は、AccessKey を使用して Alibaba Cloud API を呼び出します。このステップの目標は、Workbench CLI が必要とする最小権限のみを持つ AccessKey を取得し、次のステップでローカル CLI に設定できるようにすることです。推奨されるプロセスは次のとおりです:RAM ユーザーの作成 → 最小権限の付与 → RAM ユーザー用の AccessKey の作成。

重要

Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret を使用して CLI を設定することは推奨しません。Alibaba Cloud アカウントの AccessKey には、アカウント配下のすべてのクラウドリソースを操作する権限があります。漏洩した場合、すべての資産が危険にさらされます。常に最小権限を持つ RAM ユーザーの AccessKey を使用してください。

説明

すでに Workbench CLI の最小権限を持つ RAM ユーザーがいる場合は、ステップ 1 から 3 をスキップして、 ステップ 4: RAM ユーザー用の AccessKey の作成 から開始できます。

  1. RAM ユーザーの作成。RAM コンソールにログインし、[ID] > [ユーザー] ページに移動し、 [ユーザーの作成] をクリックします。作成ページで、 [ログイン名] と [表示名] を入力し、 [OK] をクリックします。

    この時点では AccessKey を作成しないでください。AccessKey は、権限を付与した後、ステップ 4 で作成します。

  2. カスタム権限ポリシーの作成。RAM コンソールの [権限] > [ポリシー] ページで、 [ポリシーの作成] をクリックし、 [JSON] タブに切り替え、次の JSON を貼り付けて、 [OK] をクリックします。

    {
      "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

    接続先インスタンスのクラウドアシスタントエージェントのステータスを確認します。

    ecs:StartTerminalSession

    Elastic Compute Service (ECS) インスタンスとのターミナルセッションを確立します。

    ecs-workbench:LoginECSInstance

    Workbench チャネル経由でのパスワードレスログインを有効にします (connect、exec、upload、download で使用)。

    ecs-workbench:ChatMessages

    セッション内の AI エージェントアシスタント (/agent モード) に必要な権限。

    ecs-workbench:EndSessions

    Workbench セッションを閉じます (session close および自動セッションクリーンアップで呼び出されます)。

    ram:CreateServiceLinkedRole

    初回使用時に Workbench サービスリンクロールを作成します。Condition は、作成を workbench.ecs.aliyuncs.com サービスのサービスリンクロールのみに制限します。

    デフォルトでは、ポリシーはすべてのインスタンスへのアクセスを許可します。特定のインスタンスに絞り込むには、インスタンスレベルでの認可をサポートするアクションにのみインスタンス ARN を適用します。それらを別々の Statement ブロックに分割し、 Resource を変更します。

    "Resource": "acs:ecs:<region>:<account-id>:instance/<instance-id>"
    説明

    ecs-workbench:ChatMessages および ram:CreateServiceLinkedRole は、インスタンス ARN による絞り込みをサポートしていません。これらについては "Resource": "*" を維持してください。

  3. RAM ユーザーへのポリシーの付与。ステップ 1 で作成した RAM ユーザーの詳細ページに移動し、 [権限] タブに切り替え、 [権限の付与] をクリックし、前のステップで作成したカスタムポリシーを選択して、認可を完了します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。

  4. RAM ユーザー用の AccessKey の作成。RAM ユーザー詳細ページの [認証情報] > [AccessKey] タブで、 [AccessKey の作成] をクリックします。表示されるダイアログで、 [CLI で AccessKey を使用] を選択し、 [AccessKey を作成する必要があることを確認します] を選択して、 [続行して作成] をクリックします。詳細については、「AccessKey ペアの作成」をご参照ください。

    重要

    AccessKey Secret は作成時に一度しか表示されず、ページを閉じた後は再度表示できません。AccessKey ID と Secret をすぐにパスワードマネージャーやキーストアに保存してください。紛失した場合は、新しい AccessKey を作成するしかありません。

    AccessKey は長期的な認証情報です。一度漏洩すると、長期間にわたって悪用される可能性があります。本番環境では、ステップ 3 での設定完了後、すぐに RamRoleArn などの自動更新される認証情報モードに切り替えることを推奨します。詳細については、本ドキュメントの「その他の設定方法」セクションをご参照ください。

ステップ 3: ローカル CLI での AccessKey の設定

次のコマンドを実行し、プロンプトに従ってステップ 2 で取得した 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 を直接編集して対応するプロファイルに language フィールドを追加することもできます。

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

変更は次回の接続時に有効になります。デーモンを再起動する必要はありません。

(オプション) 複数プロファイルの管理

複数の Alibaba Cloud アカウントや複数の認証情報セットを切り替える必要がある場合は、プロファイル機能を使用して、再設定を繰り返す手間を省くことができます。すべてのプロファイルは同じ ~/.workbench/config.json ファイルに保存され、 current フィールドがアクティブなプロファイルを示します。

workbench config --profile prod          # prod という名前のプロファイルを作成または編集
workbench config list                    # すべてのプロファイルを一覧表示 (* はアクティブなプロファイルを示す)
workbench config get --profile prod      # 特定のプロファイルの詳細を表示
workbench config switch --profile prod   # アクティブなプロファイルを切り替え
workbench config delete --profile old    # プロファイルを削除 (アクティブなプロファイルは削除不可)
workbench exec -i i-xxx -c "hostname" --profile prod   # このコマンドのみ特定のプロファイルを使用

config.json 内の複数プロファイル構造の例を次に示します。

{
  "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 という名前のプロファイルに保存します。手動での操作は必要ありません。

その他の設定方法

AccessKey は長期的な認証情報であり、一度漏洩すると長期間にわたって悪用される可能性があります。本番環境や、より厳しいセキュリティ要件がある場合は、以下の 4 つのモードのいずれかに切り替えることを推奨します。

モード

シナリオ

設定コマンド

AK (本ドキュメントのステップ 2 から 3)

長期的な AccessKey。開発環境でのクイックスタート向け。

workbench config

StsToken

一時的なセキュリティ認証情報 (AccessKey + STS トークン)。すでに STS の一時的な認証情報を持っているシナリオに適しています。

workbench config --mode StsToken

RamRoleArn

本番環境で推奨:低権限の AccessKey で高権限の RAM ロールを引き受け、STS の一時的な認証情報を自動的に更新します。

workbench config --mode RamRoleArn

CredentialsCmd

外部プログラムを実行して動的に認証情報を取得し、既存の認証情報配布またはキー管理システムと統合します。

workbench config --mode CredentialsCmd

CredentialsURI

HTTP サービス (メタデータサービス、サイドカーなど) を使用して動的に認証情報を取得します。

workbench config --mode CredentialsURI

STS 一時認証情報の使用 (StsToken)

STS を通じて取得した一時的なセキュリティ認証情報 (AccessKey ID + AccessKey Secret + STS トークン) を使用して直接認証します。このモードは、すでに一時的な認証情報を保持しているシナリオに適しています。一時的な認証情報には有効期限があり、期限切れ後に再設定する必要があります。自動更新が必要な場合は、代わりに RamRoleArn モードを使用してください。

workbench config --mode StsToken

プロンプトに従って、一時的な AccessKey ID、AccessKey Secret、および STS トークンを順番に入力します。 ~/.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 を呼び出して一時的な認証情報を取得し、有効期限が切れる前に自動的に更新します。認証情報は長期的な AccessKey として永続化されないため、本番環境に適しています。

workbench config --mode RamRoleArn

プロンプトに従って、低権限の AccessKey ID、AccessKey Secret、引き受ける RAM ロールの ARN (フォーマット: acs:ram::<account-id>:role/<role-name>)、およびセッション識別子 (デフォルト: 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)

認証情報は、外部プログラムを実行することによって動的に取得されます。このモードは、既存の認証情報配布またはキー管理システムとの統合に適しています。各 API リクエストの前に、CLI は設定されたコマンドを実行し、その stdout を認証情報として解析します。

workbench config --mode CredentialsCmd

プロンプトに従って、外部コマンドのフルパスとパラメータを入力します。外部コマンドの終了コードは 0 である必要があり、その stdout 出力は次の 2 つの 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 フォーマットで認証情報を stdout に返すだけで済みます。これにより、既存の認証情報配布ツールやキー管理システムと統合できます。

認証情報 URI の使用 (CredentialsURI)

一時的な認証情報は、HTTP サービスに GET リクエストを送信することによって取得されます。このモードは、自社構築の認証情報配布サービス、ECS インスタンスメタデータサービス、サイドカー認証情報エンドポイントなどのシナリオに適しています。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

3 番目のコマンド (~/.workbench を削除) はオプションで、すべてのローカル認証情報と設定ファイルをクリアするために使用します。

Windows

PowerShell で、次のコマンドを順番に実行します。

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

# クラウドアシスタントベースのインストール中に作成されたシムを削除
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 に追加したディレクトリが、現在のシェルセッションでまだ有効になっていません。

解決策:

  • Linux / macOS:新しいターミナルを開くか、 source ~/.bashrc (または ~/.zshrc) を実行するか、絶対パス /usr/local/bin/workbench version を直接使用して確認します。

  • Windows:PowerShell ウィンドウを閉じて再度開きます。

workbench config を実行すると設定ファイルのパーミッションエラーが返される

原因:CLI は、同じマシン上の他のユーザーに認証情報が読み取られるのを防ぐため、過度に広いパーミッション (例: 0644 やグループ読み取り可能) を持つ ~/.workbench/config.json ファイルを拒否します。

解決策: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 のステータスが[有効] であることを確認します。

関連ドキュメント