ali-instance-cli を使用して 60 秒間有効な一時的な公開鍵を登録し、パスワードの代わりに秘密鍵を使用して Elastic Compute Service (ECS) インスタンスに接続します。
一時的な公開鍵
一時的な公開鍵を使用すると、インスタンスにキーペアを設定することなく、SSH 経由でインスタンスに接続できます。接続するたびに、60 秒間有効な一時的な公開鍵を登録し、パスワードの代わりに対応する秘密鍵を使用します。
一時的な公開鍵はクラウドアシスタントサーバーに保存されます。
事前準備
セッションマネージャーサービスの有効化
インスタンスが実行中状態であるかの確認
クラウドアシスタントエージェントがインストールされているかの確認
セッションマネージャー用の RAM ユーザーの認証情報の準備
1. セッションマネージャー CLI のインストールと設定
すでにセッションマネージャー CLI をインストールして設定している場合は、このステップをスキップできます。
1.1 インストール
まず、セッションマネージャー CLI (ali-instance-cli) をローカルコンピューターにインストールします。インストール方法は、ご利用のオペレーティングシステムによって異なります。
Windows
Windows 用 ali-instance-cli をダウンロードするにはここをクリックし、ローカルフォルダーに保存します。
このトピックでは、C:\Users\test フォルダーを例として使用します。
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 を使用して Alibaba Cloud インスタンスに接続する場合、AccessKey などの ID 認証情報を設定する必要があります。詳細については、「セッションマネージャー用の RAM ユーザーの認証情報の準備」をご参照ください。
Windows
-
をクリックし、cmd と入力して
Enterキーを押し、コマンドプロンプトウィンドウを開きます。 -
ali-instance-cli.exe があるディレクトリに切り替えます。このトピックでは、
C:\Users\testを例として使用します。cd C:\Users\test -
認証情報を設定します。次の 3 つの設定方法がサポートされています。
AccessKey
次のコマンドを実行し、プロンプトに従ってAccessKey ID、AccessKey Secret、およびリージョン ID を設定します。
ali-instance-cli.exe configure --mode AKSTS トークン
次のコマンドを実行して設定を完了します。
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 Secret、およびSTS トークンに置き換えます。CredentialsURI
次のコマンドを実行し、プロンプトに従ってCredentials URI とリージョン ID を入力します。
ali-instance-cli.exe configure --mode=CredentialsURI次の内容が返された場合、設定は完了です。

macOS/Linux
-
ali-instance-cli があるディレクトリに移動します。このトピックでは、現在のユーザーのルートディレクトリ
~を例として使用します。cd ~ -
認証情報を設定します。
AccessKey
次のコマンドを実行し、プロンプトに従ってAccessKey ID、AccessKey Secret、およびリージョン ID を設定します。
./ali-instance-cli configure --mode AKSTS トークン
次のコマンドを実行して設定を完了します。
./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 Secret、およびSTS トークンに置き換えます。CredentialsURI
次のコマンドを実行し、プロンプトに従ってCredentials URI とリージョン ID を設定します。
./ali-instance-cli configure --mode=CredentialsURI次の内容が返された場合、設定は完了です。

2. 一時的な公開鍵のインスタンスへの登録
2.1 インスタンス ID の取得
対象のインスタンスの ID を取得します。
2.2 キーペアの生成
お使いのコンピューターでキーペアを生成します。公開鍵ファイルは、ステップ 2.3 で一時的な公開鍵として使用されます。
Windows コンピューター
コマンドプロンプトを開き、次のコマンドを実行してキーペアを生成します。
この例では、OpenSSH クライアントを使用して C:\Users\test ディレクトリにキーペアを生成します。
ssh-keygen -t rsa -b 2048 -f id_rsa
-
-t rsa:Rivest-Shamir-Adleman (RSA)キータイプ。 -
-b 2048:キー長 (ビット単位)。 -
-f id_rsa:キーファイル名。
パスフレーズの入力を求められます。設定した場合、秘密鍵を使用するたびにパスフレーズが必要になります。
パスフレーズが不要な場合は、Enter キーを押してスキップします。
公開鍵ファイル id_rsa.pub と秘密鍵ファイル id_rsa が作業ディレクトリに生成されます。この例では、作業ディレクトリは C:\Users\test です。
macOS または Linux コンピューター
ターミナルを開き、次のコマンドを実行してキーペアを生成します。
この例では、OpenSSH クライアントを使用してキーペアを生成します。
ssh-keygen -t rsa -b 2048 -f id_rsa
-
-t rsa:RSAキータイプ。 -
-b 2048:キー長 (ビット単位)。 -
-f id_rsa:キーファイル名。
パスフレーズの入力を求められます。設定した場合、秘密鍵を使用するたびにパスフレーズが必要になります。
パスフレーズが不要な場合は、Enter キーを押してスキップします。
公開鍵ファイル id_rsa.pub と秘密鍵ファイル id_rsa が作業ディレクトリに生成されます。
2.3 一時的な公開鍵のインスタンスへの送信
Windows コンピューター
コマンドプロンプトを開き、ali-instance-cli.exe のディレクトリに移動し、次のコマンドを実行して一時的な公開鍵をインスタンスに登録します。
<instance_id>をインスタンス ID に、<public_key_path>をステップ 2.2 で生成した公開鍵ファイルのパスに、<ecs_username>を一時的な公開鍵を割り当てるユーザー名に置き換えます。
ali-instance-cli.exe send_public_key --instance <instance_id> --public-key <public_key_path> --user-name <ecs_username>
例:C:\Users\test\id_rsa.pub の公開鍵をインスタンス i-bp1****** に登録し、ecs-user ユーザーに割り当てます。
ali-instance-cli.exe send_public_key --instance i-bp1****** --public-key C:\Users\test\id_rsa.pub --user-name ecs-user
コマンドが成功したら、60 秒以内に対応する秘密鍵を使用してインスタンスに接続します。
macOS または Linux コンピューター
ターミナルを開き、ali-instance-cli のディレクトリに移動し、次のコマンドを実行して一時的な公開鍵をインスタンスに登録します。
<instance_id>をインスタンス ID に、<public_key_path>をステップ 2.2 で生成した公開鍵ファイルのパスに、<ecs_username>を一時的な公開鍵を割り当てるユーザー名に置き換えます。
./ali-instance-cli send_public_key --instance <instance_id> --public-key <public_key_path> --user-name <ecs_username>
例:~/id_rsa.pub の公開鍵をインスタンス i-bp1****** に登録し、ecs-user ユーザーに割り当てます。
./ali-instance-cli send_public_key --instance i-bp1****** --public-key ~/id_rsa.pub --user-name ecs-user
-
コマンドが成功したら、60 秒以内に対応する秘密鍵を使用してインスタンスに接続します。
3. SSH 経由によるインスタンスへの接続
パスワードまたは公開鍵が正しくないというプロンプトが表示された場合、公開鍵の有効期限が切れている可能性があります。一時的な公開鍵は 60 秒間有効です。
コマンドプロンプトまたはターミナルを開き、次のコマンドを実行してインスタンスに接続します。
<private_key_path>をステップ 2.2 で生成した秘密鍵ファイルのパスに、<ecs-username>をステップ 2.3 で指定したユーザー名に、<ecs_ip>をインスタンスのパブリック IP アドレスに置き換えます。
ssh -i <private_key_path> <ecs-username>@<ecs_ip>
例:秘密鍵 ~/id_rsa を使用して ecs-user としてインスタンス 223.***.***.187 に接続します。
ssh -i ~/id_rsa ecs-user@223.***.***.187
ali-instance-cli のポートフォワーディング機能を使用して、パブリック IP アドレスを持たないインスタンスに接続することもできます。詳細については、「Session Manager CLI のポートフォワーディング機能を使用したパブリック IP アドレスを持たないインスタンスへの接続」をご参照ください。
よくある質問
コマンド実行後にコマンドラインが応答しない (インスタンスが実行中でない場合)
ali-instance-cli コマンドを実行した後にコマンドラインが応答しない場合、インスタンスが実行中状態でない可能性があります。インスタンスのステータスを表示するには、このトピックの「インスタンスが実行中状態であるかの確認」をご参照ください。
コマンド実行後にコマンドラインが応答しない (セキュリティグループの設定の問題)
ali-instance-cli コマンドを実行した後にコマンドラインが応答しない場合、アウトバウンドトラフィックに必要なポートがセキュリティグループで開かれていない可能性があります。デフォルトでは、基本セキュリティグループはすべてのアウトバウンドトラフィックを許可します。この問題は、アウトバウンドルールを変更した場合や、高度セキュリティグループを使用した場合に発生する可能性があります。セキュリティグループのルールは次のように説明されています。
セッションマネージャーを使用して ECS インスタンスに接続する場合、ECS インスタンスで実行されているクラウドアシスタントエージェントがクラウドアシスタントサーバーに接続されていることを確認するために、アウトバウンドセキュリティグループに次のルールを追加します。
SSH や RDP (Remote Desktop Protocol) などの接続方法と比較して、クラウドアシスタントエージェントはセッションマネージャーサーバーへの WebSocket 接続を能動的に確立します。セキュリティルールでは、クラウドアシスタントサーバーのアウトバウンド WebSocket ポートを開くだけで済みます。セッションマネージャーの仕組みについては、このトピックの「セッションマネージャーの仕組み」セクションをご参照ください。
デフォルトのセキュリティグループを含む基本セキュリティグループを使用する場合、すべてのアウトバウンドトラフィックが許可されます。追加の設定は不要です。
高度セキュリティグループを使用する場合、すべてのアウトバウンドトラフィックが拒否されます。関連するルールを設定する必要があります。次の表にルールを示します。セキュリティグループの詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。
セキュリティグループにルールを追加する方法については、「セキュリティグループルールの追加」をご参照ください。
アクション | 優先度 | プロトコルタイプ | ポート範囲 | 承認オブジェクト | 説明 |
許可 | 1 | カスタム TCP | 443 |
| このポートは、クラウドアシスタントサーバーへのアクセスに使用されます。 |
許可 | 1 | カスタム TCP | 443 |
| クラウドアシスタントエージェントをインストールまたは更新する際に、クラウドアシスタントエージェントのインストールパッケージが保存されているサーバーにアクセスするために使用されます。 |
許可 | 1 | カスタム UDP | 53 |
| このポートはドメイン名の解決に使用されます。 |
セッションマネージャーのみを使用してインスタンスに接続する場合は、ECS インスタンスのセキュリティを向上させるために、セキュリティグループから SSH ポート (デフォルト 22) と RDP ポート (デフォルト 3389) を許可するインバウンドルールを削除します。
コマンド実行後に DeliveryTimeout エラーが報告される (クラウドアシスタントエージェントがオフラインの場合)
以下の図に示すように、DeliveryTimeout エラーが ali-instance-cli コマンドを実行した際に報告された場合、クラウドアシスタントエージェントが利用できない可能性があります。クラウドアシスタントエージェントのステータスを確認してください。詳細については、「インスタンスにクラウドアシスタントエージェントがインストールされているかを確認する」をご参照ください。


コマンド実行後に "session manager is disabled, please enable first" エラーが報告される
ali-instance-cli コマンドの実行後に session manager is disabled, please enable first エラーが表示される場合は、セッションマネージャーが無効になっています。 コンソールでセッションマネージャーを有効にできます。 詳細については、「セッションマネージャーを有効にする」をご参照ください。
長時間の無操作による接続の自動切断
セッションマネージャーを使用してターゲットインスタンスに接続した後、長時間の無操作が続くと接続は自動的に切断されます。デフォルトのアイドルタイムアウトは 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 ログの分析方法
セッションマネージャー CLI で問題が発生した場合、ログを分析して原因を特定できます。
-
セッションマネージャー CLI ツールのログの表示:セッションマネージャー CLI (ali-instance-cli) を使用すると、ツールが配置されているディレクトリに
~/log/aliyun_ecs_session_log.2022XXXXのようなログフォルダーが生成されます。このフォルダーで関連するログを見つけることができます。 -
クラウドアシスタントエージェントのログの表示:
-
Linux
/usr/local/share/aliyun-assist/<Cloud Assistant Agent version>/log/ -
Windows
C:\ProgramData\aliyun\assist\<Cloud Assistant Agent version>\log
-





