Session Manager CLI (ali-instance-cli) は、クラウドアシスタントと WebSocket を使用して TCP ポートフォワーディングを有効にします。この機能により、パブリック IP アドレスを持たないインスタンス上のサービスに直接アクセスしたり、インスタンスをジャンプサーバーとして使用して他のプライベートネットワークサービスにアクセスしたりできます。
利用シーン
利用シーン 1:パブリック IP アドレスを持たない ECS インスタンス上のサービスへのアクセス。 パブリック IP アドレスを持たない ECS インスタンス上のサービスポート (Nginx のポート | 利用シーン 2:インスタンスをジャンプサーバーとして使用し、他のプライベートホスト上のサービスにアクセスする。 ApsaraDB RDS for MySQL データベースなど、直接接続できないサービスについては、ターゲットサービスへのネットワークアクセス権を持つ ECS インスタンスをジャンプサーバーとして使用します。ポートフォワーディングセッションは、このインスタンスを介してトンネリングされ、他のプライベートネットワークサービスに到達します。 |
ポートフォワーディングセッションは、コマンドラインウィンドウが実行中である間のみアクティブです。ウィンドウを閉じると、セッションは直ちに終了します。
利用シーン 1:パブリック IP アドレスを持たない ECS インスタンス上のサービスへのアクセス
事前準備と Session Manager CLI のインストールと設定を完了してから、次の手順に従ってください。
Windows の場合
PowerShell で、ali-instance-cli.exe が格納されているディレクトリに移動し、次のコマンドを実行します。
# INSTANCE_ID をポートフォワーディングを設定するインスタンスの ID に、TARGET_PORT をターゲット ECS インスタンスのポートに、LOCAL_PORT をご利用のローカルマシンにマッピングするポートに置き換えます。
.\ali-instance-cli.exe portforward -i INSTANCE_ID -r TARGET_PORT -l LOCAL_PORT出力[Waiting For Connections]は、トンネルがアクティブであることを示します。127.0.0.1:<local_port>に接続することで、インスタンスのTARGET_PORT 上のサービスにアクセスできるようになります。
たとえば、ターゲット ECS インスタンスi-bp1******のデフォルトの Nginx ポート80をローカルマシンのポート8080に転送するには、.\ali-instance-cli.exe portforward -i i-bp1****** -r 80 -l 8080を実行します。
macOS または Linux の場合
ターミナルで、ali-instance-cli が配置されているディレクトリに移動し、次のコマンドを実行します。
#INSTANCE_ID をポートフォワーディングを設定するインスタンスの ID に、TARGET_PORT をターゲット ECS インスタンスのポートに、LOCAL_PORT をご利用のローカルマシンにマッピングするポートに置き換えます。
./ali-instance-cli portforward -i INSTANCE_ID -r TARGET_PORT -l LOCAL_PORT出力 [接続を待機しています] は、トンネルがアクティブであることを示します。 これで、127.0.0.1:<local_port> に接続して、インスタンスの TARGET_PORT 上のサービスにアクセスできます。
たとえば、ターゲット ECS インスタンスi-bp1******のデフォルト Nginx ポート80をローカルマシンのポート8080に転送するには、./ali-instance-cli portforward -i i-bp1****** -r 80 -l 8080を実行します。
利用シーン 2:インスタンスをジャンプサーバーとして使用した他のプライベートホスト上のサービスへのアクセス
事前準備と Session Manager CLI のインストールと設定を完了してから、次の手順に従ってください。
Windows の場合
PowerShell を開き、ali-instance-cli.exe が格納されているディレクトリに移動して、次のコマンドを実行します:
# INSTANCE_ID をジャンプサーバーインスタンスの ID に、TARGET_IP をターゲットホストの IP アドレスに、TARGET_PORT をターゲットホストのポートに、LOCAL_PORT をご利用のローカルマシンにマッピングするポートに置き換えます。
.\ali-instance-cli.exe portforward -i INSTANCE_ID -r TARGET_IP:TARGET_PORT -l LOCAL_PORT出力 [Waiting For Connections] は、ジャンプサーバーのトンネルが確立されたことを示します。127.0.0.1:<local_port> へのトラフィックは、ジャンプサーバー経由で TARGET_IP:TARGET_PORT にルーティングされます。
たとえば、ECS ジャンプサーバーi-bp1******を介して、プライベートエンドポイントrm-******.mysql.rds.aliyuncs.com:3306の RDS for MySQL インスタンスへのトラフィックを、ローカルマシンのポート13306にマッピングするには、.\ali-instance-cli.exe portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306を実行します。
macOS または Linux の場合
terminal を開いて、ali-instance-cli があるディレクトリに移動し、次のコマンドを実行します。
#INSTANCE_ID をジャンプサーバーインスタンスの ID に、TARGET_IP をターゲットホストの IP アドレスに、TARGET_PORT をターゲットホストのポートに、LOCAL_PORT をご利用のローカルマシンにマッピングするポートに置き換えます。
./ali-instance-cli portforward -i INSTANCE_ID -r TARGET_IP:TARGET_PORT -l LOCAL_PORT出力 [接続待機中] は、ジャンプサーバーのトンネルが確立されたことを示します。これにより、127.0.0.1:<local_port> へのトラフィックは、ジャンプサーバーを経由して TARGET_IP:TARGET_PORT にルーティングされます。
たとえば、ECS ジャンプサーバーi-bp1******経由で RDS for MySQL インスタンス (プライベートエンドポイントrm-******.mysql.rds.aliyuncs.com:3306) をローカルマシンのポート13306にマッピングするには、./ali-instance-cli portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306を実行します。
よくある質問
コマンド実行後にコマンドラインが応答しない (インスタンスが実行中でない場合)
ali-instance-cli コマンドを実行してもコマンドラインが応答しない場合、インスタンスが[実行中]状態ではない可能性があります。インスタンスのステータスを表示するには、この Topic の「インスタンスが実行中状態であるかを確認する」をご参照ください。
コマンド実行後にコマンドラインが応答しない (セキュリティグループの設定に問題がある場合)
ali-instance-cli コマンドを実行してもコマンドラインが応答しない場合、セキュリティグループで アウトバウンド トラフィックに必要なポートが開いていないことが原因である可能性があります。 デフォルトでは、基本セキュリティグループはすべてのアウトバウンドトラフィックを許可します。 この問題は、アウトバウンドルールを変更した場合や、高度セキュリティグループ を使用した場合に発生することがあります。 セキュリティグループルールは次のとおりです。
Session Manager を使用して ECS インスタンスに接続する場合、[アウトバウンド] セキュリティグループに以下のルールを追加し、ECS インスタンスで実行されている クラウドアシスタントエージェントがクラウドアシスタントサーバーに接続されるようにしてください。
SSH や RDP (Remote Desktop Protocol) などの接続方法と比較して、クラウドアシスタントエージェントは Session Manager サーバーへの WebSocket 接続を能動的に確立します。セキュリティルールで Cloud Assistant サーバーの [アウトバウンド] WebSocket ポートを開くだけで済みます。Session Manager の仕組みについては、この Topic の「Session Manager の仕組み」セクションをご参照ください。
デフォルトのセキュリティグループを含む基本セキュリティグループを使用する場合、すべてのアウトバウンドトラフィックが許可されます。追加の設定は不要です。
高度セキュリティグループを使用する場合、すべてのアウトバウンドトラフィックが拒否されます。関連するルールを設定する必要があります。次の表にルールを示します。セキュリティグループの詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。
セキュリティグループにルールを追加する方法については、「セキュリティグループルールの追加」をご参照ください。
アクション | 優先度 | プロトコルタイプ | ポート範囲 | 承認オブジェクト | 説明 |
許可 | 1 | カスタム TCP | 443 |
| このポートは、クラウドアシスタントサーバーへのアクセスに使用されます。 |
許可 | 1 | カスタム TCP | 443 |
| このポートは、クラウドアシスタントエージェントをインストールまたは更新する際に、クラウドアシスタントエージェントのインストールパッケージが格納されているサーバーにアクセスするために使用されます。 |
許可 | 1 | カスタム UDP | 53 |
| このポートは、ドメイン名の解決に使用されます。 |
セッションマネージャーのみを使用してインスタンスに接続する場合は、ECS インスタンスのセキュリティを向上させるために、SSH ポート (デフォルト 22) と RDP ポート (デフォルト 3389) を許可するインバウンドルールをセキュリティグループから削除してください。
DeliveryTimeout エラー:クラウドアシスタントエージェントがオフラインの場合
DeliveryTimeout エラーは、クラウドアシスタントエージェントがオフラインである可能性があることを示します。エージェントのステータスを確認するには、「インスタンスにクラウドアシスタントエージェントがインストールされているかどうかを確認する」をご参照ください。
コマンド実行後に "session manager is disabled, please enable first" エラーが報告される場合
ali-instance-cli コマンドを実行した後に session manager is disabled, please enable first エラーが報告された場合、Session Manager が無効になっています。コンソールで Session Manager を有効にできます。詳細については、「Session Manager を有効にする」をご参照ください。
ali-instance-cli ログの分析方法
Session Manager CLI で問題が発生した場合、ログを分析して原因を特定できます。
Session Manager CLI ツールのログの表示: Session Manager 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