コンピュータで Session Manager CLI を使用して、パスワードなしでパブリック IP アドレスを持たない Elastic Compute Service(ECS)インスタンスに接続できます。SSH やリモートデスクトッププロトコル(RDP)と比較して、Session Manager を使用すると、より便利で安全な方法でインスタンスに接続できます。このトピックでは、Session Manager CLI と、Session Manager CLI を使用して ECS インスタンスに接続する方法について説明します。
Session Manager CLI
Session Manager CLI は、ali-instance-cli とも呼ばれ、Alibaba Cloud が提供するコマンドラインツールです。コンピュータに Session Manager CLI をインストールして構成できます。その後、ali-instance-cli コマンドを実行して、Session Manager を使用して ECS インスタンスに接続できます。
ali-instance-cli を Alibaba Cloud CLI と共に使用して、コマンドラインのみの操作を実行できます。Alibaba Cloud CLI の詳細については、「Alibaba Cloud CLI とは」をご参照ください。
準備
Session Manager を有効にする
ali-instance-cli を使用する前に、Alibaba Cloud アカウントを使用して Session Manager を有効にしてください。Session Manager は ECS コンソールでのみ有効にできます。Session Manager を有効にするには、次の手順を実行します。
ECS コンソール - インスタンス に移動します。
上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。
[インスタンス] ページで、接続するインスタンスを見つけ、[操作] 列の [接続] をクリックします。
[他のログイン方法を表示] をクリックします。 [セッションマネージャー] セクションで、[セッション管理クローズ] の右側にあるスイッチをオンにし、画面の指示に従って Session Manager を有効にします。


接続するインスタンスが実行中状態であることを確認する
Session Manager を使用して接続できるのは、[実行中] 状態のインスタンスのみです。
ECS コンソールの使用
ECS コンソールの [インスタンス] ページで、インスタンスのステータスを表示できます。
インスタンスのステータスの確認方法については、「インスタンス情報の表示」をご参照ください。
Alibaba Cloud CLI の使用
Alibaba Cloud CLI を構成している場合は、コマンドを実行して API オペレーションを呼び出し、インスタンスのステータスをクエリします。API オペレーションのパラメータについては、「DescribeInstanceStatus」をご参照ください。
たとえば、ID が i-bp1******
で、中国(杭州)リージョンにあるインスタンスのステータスをクエリするには、次のコマンドを実行します。
aliyun ecs DescribeInstanceStatus --region cn-hangzhou --RegionId 'cn-hangzhou' --InstanceId.1 'i-bp1******'
インスタンスが実行中状態の場合、コマンド出力の Status
パラメータの値は Running
です。
{
"TotalCount": 1,
"RequestId": "A413****-****-****-****-****611B",
"PageSize": 1,
"PageNumber": 1,
"InstanceStatuses": {
"InstanceStatus": [
{
"Status": "Running",
"InstanceId": "i-bp1******"
}
]
}
}
DescribeInstances など、他のオペレーションを呼び出すコマンドを実行して、インスタンスのステータスをクエリすることもできます。詳細については、「DescribeInstances」をご参照ください。
確認する Cloud Assistant クライアント接続先のインスタンスにインストールされています
Session Manager は クラウドアシスタント に依存します。次のいずれかの方法を使用して、インスタンスに Cloud Assistant クライアント がインストールされているかどうかを確認できます。
Cloud Assistant クライアント は、2017 年 12 月 1 日以降に Alibaba Cloud パブリックイメージ から作成された ECS インスタンスにプリインストールされています。2017 年 12 月 1 日より前に作成された ECS インスタンスの場合は、Cloud Assistant クライアント を手動でインストールする必要があります。詳細については、「Cloud Assistant クライアントのインストール」をご参照ください。
ECS コンソールの使用
Session Manager は クラウドアシスタント に基づいて実装されています。インスタンスに Cloud Assistant クライアント をインストールする必要があります。ECS コンソールの ECS クラウドアシスタント ページで Cloud Assistant クライアント のステータスを表示できます。
Cloud Assistant クライアント は、2017 年 12 月 1 日以降に Alibaba Cloud パブリックイメージ から作成された ECS インスタンスにプリインストールされています。2017 年 12 月 1 日より前に作成された ECS インスタンスの場合は、Cloud Assistant クライアント を手動でインストールする必要があります。詳細については、「Cloud Assistant クライアントのインストール」をご参照ください。
Cloud Assistant クライアント のステータスを表示し、異常を処理する方法については、「Cloud Assistant のステータスの表示と異常の処理」をご参照ください。
Alibaba Cloud CLI の使用
Alibaba Cloud CLI を構成している場合は、DescribeCloudAssistantStatus オペレーションを呼び出すコマンドを実行して、インスタンスに Cloud Assistant クライアント がインストールされていて、Session Manager をサポートしているかどうかを確認します。DescribeCloudAssistantStatus オペレーションのパラメータについては、「DescribeCloudAssistantStatus」をご参照ください。
たとえば、インスタンスに i-bp1******
の ID が割り当てられていて、中国(杭州)リージョンにある場合は、次のコマンドを実行して、インスタンスに Cloud Assistant クライアント がインストールされていて、Session Manager をサポートしているかどうかを確認します。
aliyun ecs DescribeCloudAssistantStatus --region cn-hangzhou --RegionId 'cn-hangzhou' --InstanceId.1 'i-bp1******'
インスタンスに Cloud Assistant クライアント がインストールされていて、Session Manager をサポートしている場合、コマンド出力の CloudAssistantStatus
パラメータと SupportSessionManager
パラメータの値は true
です。
{
"TotalCount": 1,
"PageSize": 1,
"RequestId": "DB34****-****-****-****-****A749",
"NextToken": "",
"PageNumber": 1,
"InstanceCloudAssistantStatusSet": {
"InstanceCloudAssistantStatus": [
{
"CloudAssistantVersion": "2.2.3.857",
"SupportSessionManager": true,
"InstanceId": "i-bp1******",
"InvocationCount": 4,
"OSType": "Linux",
"CloudAssistantStatus": "true",
"LastHeartbeatTime": "2024-12-10T02:38:04Z",
"LastInvokedTime": "2024-12-08T16:02:45Z",
"ActiveTaskCount": 0
}
]
}
}
API オペレーションの呼び出し
DescribeCloudAssistantStatus オペレーションを呼び出して、インスタンスに Cloud Assistant クライアント がインストールされているかどうかを確認します。詳細については、「DescribeCloudAssistantStatus」をご参照ください。
Session Manager を使用する RAM ユーザーの資格情報を準備する
ali-instance-cli
を使用する場合、RAM ユーザーの AccessKey ペア と セキュリティトークンサービス(STS)トークン を指定する必要があります。Session Manager を使用してインスタンスに接続すると、システムは、資格情報を持つ RAM ユーザーに ecs:StartTerminalSession
権限もあるかどうかを確認します。
カスタムポリシーを構成する場合、Resource
パラメータを構成して、RAM ユーザーが Session Manager を使用して接続できる ECS インスタンスを指定できます。ポリシーの例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:StartTerminalSession",
"Resource": "*"
}
]
}
CredentialsURI パラメータと STS トークン パラメータについては、「AccessKey ペアの作成」および「STS とは」をご参照ください。
RAM ユーザーに権限を付与する方法については、「RAM ユーザーへの権限の付与」をご参照ください。
1. ali-instance-cli をインストールして構成する
説明 ali-instance-cli を既にインストールして構成している場合は、この手順をスキップしてください。
1.1 ali-instance-cli をインストールする
コンピュータに ali-instance-cli をインストールします。インストール操作は、オペレーティングシステムによって異なります。
macOS
macOS ターミナルで次のコマンドを実行して、macOS 用の ali-instance-cli をダウンロードします。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli
次のコマンドを実行して、ali-instance-cli に実行権限を付与します。
chmod a+x ali-instance-cli
Linux
次のコマンドを実行して、Linux 用の ali-instance-cli をインストールします。
x86 アーキテクチャ
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli
Arm アーキテクチャ
curl -O https://aliyun-client-assist.oss-cn-beijing.aliyuncs.com/session-manager/linux_arm/ali-instance-cli
次のコマンドを実行して、ali-instance-cli に実行権限を付与します。
chmod a+x ali-instance-cli
1.2 ali-instance-cli を構成する
コンピュータで ali-instance-cli を使用してインスタンスに接続する場合、AccessKey ペアなどの ID 資格情報を構成する必要があります。AccessKey ペアは、AccessKey ID と AccessKey シークレットで構成されます。詳細については、このトピックの「Session Manager を使用する RAM ユーザーの資格情報を準備する」セクションをご参照ください。
Windows
[スタート] アイコンを右クリックし、[実行] を選択します。[実行] ダイアログボックスに cmd と入力し、Enter
キーを押して、コマンドプロンプトウィンドウを開きます。
次のコマンドを実行して、ali-instance-cli.exe が存在するディレクトリに切り替えます。この例では、C:\Users\test
ディレクトリが使用されています。
cd C:\Users\test
資格情報を構成します。次のタイプの資格情報がサポートされています。
AccessKey ペア
次のコマンドを実行し、プロンプトが表示されたら アクセスキー ID、アクセスキーシークレット、リージョン ID パラメータを構成します。
ali-instance-cli.exe configure --mode AK
STS トークン
次のコマンドを実行して、資格情報を構成します。
ali-instance-cli.exe configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"
<region>
、<ak>
、<sk>
、<sts_token>
を、実際の リージョン ID、AccessKey ID、AccessKey シークレット、セキュリティトークンサービス(STS)トークン
に置き換えます。
資格情報 URI
次のコマンドを実行し、プロンプトが表示されたら 資格情報 URI パラメータと リージョン ID パラメータを構成します。
ali-instance-cli.exe configure --mode=CredentialsURI
次のコマンド出力は、資格情報が構成されていることを示しています。

macOS または Linux
ali-instance-cli が存在するディレクトリに移動します。この例では、現在のユーザーのルートディレクトリ(~
)が使用されています。
cd ~
資格情報を構成します。
AccessKey ペア
次のコマンドを実行し、プロンプトが表示されたら アクセスキー ID、アクセスキーシークレット、リージョン ID パラメータを構成します。
./ali-instance-cli configure --mode AK
STS トークン
次のコマンドを実行して、資格情報を構成します。
./ali-instance-cli configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"
<region>
、<ak>
、<sk>
、<sts_token>
を、実際の リージョン ID、AccessKey ID、AccessKey シークレット、STS トークン
に置き換えます。
資格情報 URI
次のコマンドを実行し、プロンプトが表示されたら 資格情報 URI パラメータと リージョン ID パラメータを構成します。
./ali-instance-cli configure --mode=CredentialsURI
次のコマンド出力は、資格情報が構成されていることを示しています。

2. Session Manager を使用してインスタンスに接続する
2.1 接続するインスタンスの ID を取得する
Session Manager を使用してインスタンスに接続する前に、インスタンスの ID を取得する必要があります。
ECS コンソールの使用
ECS コンソール - インスタンス に移動します。 上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。 [インスタンス] ページで、接続するインスタンスを見つけ、図のようにインスタンス ID を表示します。
| 
|
Alibaba Cloud CLI の使用
Alibaba Cloud CLI を構成している場合は、DescribeInstances オペレーションを呼び出すコマンドを実行して、接続するインスタンスの ID をクエリします。DescribeInstances オペレーションのパラメータについては、「DescribeInstances」をご参照ください。
たとえば、中国(杭州)リージョンにある SessionManager-example
という名前のインスタンスの ID をクエリするには、次のコマンドを実行します。
aliyun ecs DescribeInstances --region cn-hangzhou --RegionId 'cn-hangzhou' --InstanceName 'SessionManager-example'
コマンド出力の InstanceId
パラメータの値は、インスタンスの ID です。

API オペレーションの呼び出し
DescribeInstances オペレーションを呼び出して、接続するインスタンスの ID をクエリします。詳細については、「DescribeInstances」をご参照ください。
2.2 セッションマネージャーを使用してインスタンスに接続するali-instance-cli
Windows コンピュータ
コマンドプロンプトウィンドウを開き、ali-instance-cli.exe が存在するディレクトリに切り替え、コマンドを実行してインスタンスに接続します。<instance_id>
を、手順 2.1 で取得したインスタンス ID に置き換えます。
ali-instance-cli.exe session --instance <instance_id>
たとえば、ID が i-bp1******
のインスタンスに接続するには、次のコマンドを実行します。
ali-instance-cli.exe session --instance i-bp1******
次のコマンド出力は、インスタンスに接続されていて、インスタンスの CLI にアクセスできることを示しています。

macOS または Linux コンピュータ
ターミナルで、ali-instance-cli.exe が存在するディレクトリに移動し、コマンドを実行してインスタンスに接続します。<instance_id>
を、手順 2.1 で取得したインスタンス ID に置き換えます。
./ali-instance-cli session --instance <instance_id>
たとえば、ID が i-bp1******
のインスタンスに接続するには、次のコマンドを実行します。
./ali-instance-cli session --instance i-bp1******
次のコマンド出力は、インスタンスに接続されていて、インスタンスの CLI にアクセスできることを示しています。

ali-instance-cli のその他の機能
Session Manager に加えて、ali-instance-cli は次の機能を提供します。
ポート フォワーディング
ali-instance-cli のポート フォワーディング機能を使用して、インスタンス上のポートをコンピュータ上のポートにマッピングすることで、インスタンスのポート フォワーディングを設定できます。この機能は、パブリック IP アドレスを持たないインスタンスに使用できます。パブリック IP アドレスを持たないインスタンスのポート フォワーディングを構成すると、プロキシまたはジャンプサーバーを使用せずにインスタンス上のサービスにアクセスできます。
一時的な SSH 公開鍵の登録
SSH 経由でインスタンスに接続する場合、一時的な SSH 公開鍵を登録する機能を使用して、一時的な SSH 公開鍵をインスタンスに登録し、対応する SSH 秘密鍵を使用してインスタンスに接続できます。
FAQ
ali-instance-cli コマンドを実行した後、コマンドラインが応答しない場合はどうすればよいですか?(インスタンスが実行中状態ではない可能性があります)
ali-instance-cli コマンドを実行した後、コマンドラインが応答しない場合は、対応するインスタンスが 実行中 状態ではない可能性があります。インスタンスのステータスを確認してください。詳細については、このトピックの「接続するインスタンスが実行中状態であることを確認する」セクションをご参照ください。
ali-instance-cli コマンドを実行した後、コマンドラインが応答しない場合はどうすればよいですか?(必要なポートがセキュリティグループで開かれていない可能性があります)
ali-instance-cli コマンドを実行した後、コマンドラインが応答しない場合は、対応するインスタンスのセキュリティグループで、アウトバウンド トラフィックに必要なポートが開かれていない可能性があります。デフォルトでは、基本セキュリティグループ はすべてのポートをアウトバウンドトラフィックに対して開きます。上記の課題は、基本セキュリティグループのアウトバウンドルールを変更した場合、またはインスタンスに 高度なセキュリティグループ を使用した場合に発生する可能性があります。
Session Manager を使用して ECS インスタンスに接続する場合は、次のルールを アウトバウンド セキュリティグループに追加して、ECS インスタンスで実行されている Cloud Assistant クライアント が Cloud Assistant サーバーに接続されていることを確認してください。
SSH やリモートデスクトッププロトコル(RDP)などの接続方法と比較して、Cloud Assistant クライアント は Session Manager サーバーへの WebSocket 接続をアクティブに確立します。セキュリティルールでは、Cloud Assistant サーバーの アウトバウンド WebSocket ポートのみを開く必要があります。Session Manager の仕組みについては、「Session Manager の仕組み」セクションをご参照ください。
重要 デフォルトセキュリティグループ を含む 基本セキュリティグループ を使用する場合、すべての アウトバウンド トラフィックが許可されます。追加の構成は必要ありません。
高度なセキュリティグループ を使用する場合、すべてのアウトバウンドトラフィックが拒否されます。関連するルールを構成する必要があります。次の表にルールを示します。セキュリティグループについては、「基本セキュリティグループと高度なセキュリティグループ」をご参照ください。
セキュリティグループにルールを追加する方法については、「セキュリティグループルールの追加」をご参照ください。
アクション | 優先度 | プロトコルタイプ | ポート範囲 | 承認オブジェクト | 説明 |
許可 | 1 | カスタム TCP | 443 | 100.100.0.0/16
| このポートは、Cloud Assistant サーバーにアクセスするために使用されます。 |
許可 | 1 | カスタム TCP | 443 | 100.0.0.0/8
| このポートは、Cloud Assistant クライアント をインストールまたは更新する場合に、Cloud Assistant クライアント インストールパッケージが保存されているサーバーにアクセスするために使用されます。 |
許可 | 1 | カスタム UDP | 53 | 0.0.0.0/0
| このポートは、ドメイン名を解決するために使用されます。 |
Session Manager のみを使用してインスタンスに接続する場合は、ECS インスタンスのセキュリティを向上させるために、SSH ポート(デフォルト 22)と RDP ポート(デフォルト 3389)を許可するインバウンドルールをセキュリティグループから削除します。
どうすればよいですか?配信タイムアウトali-instance-cli コマンドを実行した後にエラーが報告されますか?
DeliveryTimeout
エラーが、ali-instance-cli コマンドの実行後に次の図のように報告された場合は、対応するインスタンスでクラウドアシスタントクライアントが使用できない可能性があります。 クラウドアシスタントクライアントのステータスを確認してください。 詳細については、このトピックの「接続先のインスタンスにクラウドアシスタントクライアントがインストールされているかどうかを確認する」セクションをご参照ください。


どうすればよいですか?セッション マネージャーは無効になっています。最初に有効にしてください。
session manager is disabled, please enable first
というエラーメッセージが ali-instance-cli コマンドの実行後に表示された場合は、Session Managerが無効になっています。ECS コンソールで Session Manager を有効にしてください。詳細については、このトピックのSession Manager を有効にするセクションをご参照ください。
Session Manager を使用してインスタンスに確立された接続が、長時間操作がないために自動的に閉じられた場合はどうすればよいですか?
Session Manager を使用してインスタンスに接続した後、長時間操作を実行しないと、接続は自動的に閉じられます。デフォルトでは、接続のアイドルタイムアウト期間は 3 分です。--idle-timeout
パラメータを使用して、カスタムアイドルタイムアウト期間を指定できます。
たとえば、次のコマンドを実行してインスタンスに接続し、操作がない状態が 10 分続くと自動的に接続が閉じられるように構成します。
./ali-instance-cli session --instance instance-id --idle-timeout 600
説明 ali-instance-cli のバージョンが、次のバージョン以降であることを確認してください。
Linux:1.2.0.48
Windows:1.1.0.48
macOS:1.3.0.48
ali-instance-cli に関するログを表示するにはどうすればよいですか?
ali-instance-cli の使用中にエラーが発生した場合は、ログを表示して問題を特定し、トラブルシューティングできます。
ali-instance-cli のログを表示します。ali-instance-cli を使用すると、ali-instance-cli が存在するディレクトリにログディレクトリが生成されます。例:~/log/aliyun_ecs_session_log.2022XXXX
。ログディレクトリで ali-instance-cli のログを表示できます。
オペレーティングシステムに基づいて、次のいずれかのディレクトリにある Cloud Assistant クライアント のログを表示します。