Session Manager CLI(ali-instance-cli)を使用して、Elastic Compute Service(ECS)インスタンスのポートをオンプレミスコンピュータのポートにマッピングできます。 これにより、クラウドアシスタントクライアントを使用して、インターネットに接続されていないインスタンス上のサービスにアクセスできます。 このトピックでは、Session Manager CLI を使用してポート転送機能を実装し、インターネットに接続されていない ECS インスタンスにアクセスする方法について説明します。
ポート転送機能は WebSocket に基づいて実装され、TCP 経由で動作します。 TCP ポート転送のみがサポートされています。 UDP ポート転送はサポートされていません。
ポート転送とは
Session Manager CLI(ali-instance-cli)のポート転送機能は、クラウドアシスタントに基づいて実装されています。 ポート転送機能は、インスタンスのポートを、ali-instance-cli がインストールされているオンプレミスマシンのポートにマッピングできます。 また、ポート転送機能により、インスタンスをジャンプサーバーとして使用して、オンプレミスポートを別のホストのポートにマッピングし、パブリックネットワーク接続がない環境またはプライベートネットワーク経由でサービスにアクセスすることもできます。
シナリオ 1:インターネットに接続されていないインスタンスに接続する
ポート転送機能を使用して、インターネットに接続されていない ECS インスタンスのリモートアクセス ポートをオンプレミス ポートにマッピングできます。 その後、ツールを使用してオンプレミス ポートにアクセスし、インターネットに接続されていない ECS インスタンスに接続できます。
ログインするインスタンスにパブリック IP アドレスが割り当てられている場合は、セキュリティグループに拒否ルールを追加して、インスタンスへのリモートアクセスのポートを無効にし、インスタンスのセキュリティを向上させることができます。
シナリオ 2:インターネットに接続されていないインスタンス上のサービスにアクセスする
ポート転送機能を使用して、インターネットに接続されていない ECS インスタンスのサービスポート(NGINX ポートや Apache ポートなど)をオンプレミス ポートにマッピングできます。 これにより、ECS インスタンスにデプロイされているサービスにアクセスできます。
シナリオ 3:インスタンスをジャンプサーバーとして使用して他のホスト上のサービスにアクセスする
ポート転送機能を使用して、インスタンスをジャンプサーバーとして使用し、インスタンスと同じ VPC 内にあるネットワークホスト上のサービスにアクセスできます。 たとえば、VPC 内の別のインスタンスにデプロイされている MySQL サービスにアクセスできます。
ポート転送の仕組み
| |
|
準備
Session Manager を有効にする
接続するインスタンスが実行中状態であることを確認する
接続するインスタンスに クラウドアシスタントクライアント がインストールされていることを確認するCloud Assistant クライアント接続先のインスタンスにインストールされています
Session Manager を使用する RAM ユーザーの資格情報を準備する
1. ali-instance-cli をインストールして構成する
ali-instance-cli をすでにインストールして構成している場合は、この手順をスキップしてください。
1.1 ali-instance-cli をインストールする
ali-instance-cli をコンピュータにインストールします。 インストール操作は、オペレーティングシステムによって異なります。
Windows
ここをクリックして Windows 用の ali-instance-cli をダウンロードし、コンピュータのフォルダに保存します。
この例では、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 を構成する
コンピュータで 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、アクセスキー ID、アクセスキーシークレット、セキュリティトークンサービス (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、アクセスキー ID、アクセスキーシークレット、STS トークン
に置き換えます。資格情報 URI
次のコマンドを実行し、プロンプトが表示されたら 資格情報 URI パラメータと リージョン ID パラメータを構成します。
./ali-instance-cli configure --mode=CredentialsURI
次のコマンド出力は、資格情報が構成されていることを示しています。
2. ポート転送機能を使用する
2.1 ポートがオンプレミス ポートにマッピングされているインスタンスの ID を取得する
ポート転送機能を使用する前に、後続の手順のためにポートのインスタンス ID を取得します。
ECS コンソールを使用する
|
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 ポート転送を使用する
方法 1:インスタンスでポート転送機能を直接使用する
Windows コンピュータ
ポート転送を使用しているときは、コマンドプロンプトウィンドウを閉じないでください。 コマンドプロンプトウィンドウを閉じると、ポート転送も終了します。
コマンドプロンプトウィンドウを開き、ali-instance-cli.exe が保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を有効にします。
ali-instance-cli.exe portforward -i <instance_id> -r <target_port> -l <local_port>
<instance_id>
をポート転送が必要なインスタンスの ID に、<target_port>
を宛先 ECS インスタンスのポートに、<local_port>
をインスタンスポートがマッピングされるオンプレミス ポートに置き換えます。
次の図に示すように、ポート転送機能が想定どおりに実行されると、システムは接続待機状態になります。 この場合、オンプレミスマシンの 127.0.0.1:<local_port>
にアクセスすることは、インスタンスの <ecs_port>
ポートのサービスにアクセスすることと同じです。
macOS または Linux コンピュータ
ポート転送を使用しているときは、現在のターミナルを閉じないでください。 ターミナルを閉じると、ポート転送も終了します。
ターミナルで、ali-instance-cli.exe が保存されているディレクトリに移動し、コマンドを実行してインスタンスに接続します。
./ali-instance-cli portforward -i <instance_id> -r <target_port> -l <local_port>
<instance_id>
をポート転送が必要なインスタンスの ID に、<target_port>
を宛先 ECS インスタンスのポートに、<local_port>
をインスタンスポートがマッピングされるオンプレミス ポートに置き換えます。
次の図に示すように、ポート転送機能が想定どおりに実行されると、システムは接続待機状態になります。 この場合、オンプレミスマシンの 127.0.0.1:<local_port>
にアクセスすることは、インスタンスの <target_port>
ポートのサービスにアクセスすることと同じです。
方法 2:ECS インスタンスをジャンプサーバーとして使用して、トラフィックを他のホストに転送する
Session Manager CLI を使用して ECS インスタンスへの接続を確立し、ECS インスタンスをジャンプサーバーとして使用して別のホストのポートにアクセスできます。
Windows コンピュータ
ポート転送を使用しているときは、コマンドプロンプトウィンドウを閉じないでください。 コマンドプロンプトウィンドウを閉じると、ポート転送も終了します。
コマンドプロンプトウィンドウを開き、ali-instance-cli.exe が保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を有効にします。
ali-instance-cli.exe portforward -i <instance_id> -r <target_ip>:<target_port> -l <local_port>
<instance_id>
をジャンプサーバーインスタンスの ID に、<target_ip>
を宛先ホストの IP アドレスに、<target_port>
を宛先ホストのポートに、<local_port>
をインスタンスポートがマッピングされるオンプレミス ポートに置き換えます。
次の図に示すように、ポート転送機能が想定どおりに実行されると、システムは接続待機状態になります。 この場合、127.0.0.1:<local_port>
にアクセスすることは、ホストアドレスが <target_ip>
でポート番号が <target_port>
のサービスにアクセスすることと同じです。
macOS または Linux コンピュータ
ポート転送を使用しているときは、現在のターミナルを閉じないでください。 ターミナルを閉じると、ポート転送も終了します。
ターミナルで、ali-instance-cli.exe が保存されているディレクトリに移動し、次のコマンドを実行してインスタンスに接続します。
./ali-instance-cli portforward -i <instance_id> -r <target_ip>:<target_port> -l <local_port>
<instance_id>
をジャンプサーバーインスタンスの ID に、<target_ip>
を宛先ホストの IP アドレスに、<target_port>
を宛先ホストのポートに、<local_port>
をインスタンスポートがマッピングされるオンプレミス ポートに置き換えます。
次の図に示すように、ポート転送機能が想定どおりに実行されると、システムは接続待機状態になります。 この場合、127.0.0.1:<local_port>
にアクセスすることは、ホストアドレスが <target_ip>
でポート番号が <target_port>
のサービスにアクセスすることと同じです。
シナリオ例
例 1:インターネットに接続されていないインスタンスに接続する
サンプルアーキテクチャ
ポート転送機能を使用すると、インターネットに接続されていない ECS インスタンスに接続できます。
手順
Linux インスタンスに接続する
ポート転送を有効にします。
インスタンスの SSH ポート (デフォルトでは 22) をオンプレミスマシンのポート 8080 にマッピングします。 操作は、オペレーティングシステムによって異なります。
重要ポート転送が有効になった後、コマンドプロンプトウィンドウまたはターミナルを閉じると、接続が中断されます。
Windows コンピュータ
[コマンドプロンプト] ウィンドウを開き、
ali-instance-cli.exe
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。ali-instance-cli.exe portforward -i i-bp1****** -r 22 -l 8080
このコマンドでは、
-i
パラメータは、接続するインスタンスの ID であるi-bp1******
に設定されています。-r
パラメータは、インスタンスの SSH サービスである22
に設定されています。-l
パラメータは、オンプレミスコンピュータのポート 8080 である8080
に設定されています。macOS または Linux コンピュータ
[ターミナル] を開き、
ali-instance-cli
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r 22 -l 8080
このコマンドでは、
-i
パラメータは、接続するインスタンスの ID であるi-bp1******
に設定されています。-r
パラメータは、インスタンスの SSH サービスである22
に設定されています。-l
パラメータは、オンプレミスコンピュータのポート 8080 である8080
に設定されています。インスタンスに接続します。
ポート転送が有効になったら、オンプレミスマシンのポート 8080 に直接アクセスして、宛先インスタンスにアクセスできます。
リモートホストの IP アドレス:
127.0.0.1
。リモートホストの SSH ポート:
8080
。
この例では、OpenSSH クライアントが使用されています。 業務要件に基づいて適切な接続ツールを選択できます。
ポート転送。
使用する
127.0.0.1:8080
で インスタンスに接続します。
Windows インスタンスに接続する
ポート転送を有効にします。
RDP ポート (デフォルトでは 3389) をオンプレミスマシンのポート 8080 にマッピングします。 操作は、オペレーティングシステムによって異なります。
重要ポート転送が有効になった後、コマンドプロンプトウィンドウまたはターミナルを閉じると、接続が中断されます。
Windows コンピュータ
[コマンドプロンプト] ウィンドウを開き、
ali-instance-cli.exe
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。ali-instance-cli.exe portforward -i i-bp1****** -r 3389 -l 8080
このコマンドでは、
-i
パラメータ値は、接続するインスタンスの ID であるi-bp1******
です。-r
パラメータは、インスタンスの RDP サービスである3389
に設定されています。-l
パラメータは、オンプレミスコンピュータのポート 8080 である8080
に設定されています。macOS または Linux コンピュータ
[ターミナル] を開き、
ali-instance-cli
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r 3389 -l 8080
このコマンドでは、
-i
パラメータ値は、接続するインスタンスの ID であるi-bp1******
です。-r
パラメータは、インスタンスの RDP サービスである3389
に設定されています。-l
パラメータは、オンプレミスコンピュータのポート 8080 である8080
に設定されています。インスタンスに接続します。
ポート転送が有効になったら、オンプレミスマシンのポート 8080 に直接アクセスして、宛先インスタンスにアクセスできます。
リモートコンピュータ:
127.0.0.1:8080
。
次の例は、Windows リモートデスクトップ (RDP) を使用して ECS インスタンスに接続する方法を示しています。 業務要件に基づいて適切な接続ツールを選択できます。
ポート転送。
使用する
127.0.0.1:8080
で Windows インスタンスに接続します。
例 2:インターネットに接続されていない ECS インスタンスから NGINX サービスにアクセスする
サンプルアーキテクチャ
手順
ポート転送を有効にします。
NGINX ポート (デフォルトでは 80) をオンプレミスマシンのポート 8080 にマッピングします。 操作は、オペレーティングシステムによって異なります。
重要ポート転送が有効になった後、コマンドプロンプトウィンドウまたはターミナルを閉じると、接続が中断されます。
Windows コンピュータ
[コマンドプロンプト] ウィンドウを開き、
ali-instance-cli.exe
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。ali-instance-cli.exe portforward -i i-bp1****** -r 80 -l 8080
このコマンドでは、
-i
パラメータは、接続するインスタンスの ID であるi-bp1******
に設定されています。-r
パラメータは、インスタンスの NGINX ポートである80
に設定されています。-l
パラメータは、オンプレミスコンピュータのポート 8080 である8080
に設定されています。macOS または Linux コンピュータ
[ターミナル] を開き、
ali-instance-cli
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r 80 -l 8080
このコマンドでは、
-i
パラメータは、接続するインスタンスの ID であるi-bp1******
に設定されています。-r
パラメータは、インスタンスの NGINX ポートである80
に設定されています。-l
パラメータは、オンプレミスコンピュータのポート 8080 である8080
に設定されています。NGINX サービスにアクセスします。
次の例は、ブラウザで NGINX サービスのデフォルトページにアクセスする方法を示しています。
ポート転送。
使用する
http://127.0.0.1:80
を使用して、デフォルトの NGINX サービス ページにアクセスします。
例 3:ECS インスタンスをジャンプサーバーとして使用して、非公開の MySQL インスタンスにアクセスする
例の説明
次の図に示すように、この例では、ID が i-bp1******
のインスタンスをジャンプサーバーとして使用して、内部ネットワーク経由で ApsaraDB RDS for MySQL の MySQL データベースインスタンスにアクセスします。RDS インスタンスのエンドポイントは rm-******.mysql.rds.aliyuncs.com
です。
この例では、ECS インスタンスと RDS インスタンス間のネットワーク接続が確保されています。
手順
ポート転送を有効にします。
MySQL ポート (デフォルトでは 3306) をオンプレミスマシンのポート 13306 にマッピングします。 操作は、オペレーティングシステムによって異なります。
重要ポート転送が有効になった後、コマンドプロンプトウィンドウまたはターミナルを閉じると、接続が中断されます。
Windows コンピュータ
[コマンドプロンプト] ウィンドウを開き、
ali-instance-cli.exe
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。ali-instance-cli.exe portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306
このコマンドでは、
-i
パラメータは、ジャンプサーバー ECS インスタンスの ID であるi-bp1******
に設定されています。-r
パラメータは、MySQL のエンドポイントであるrm-******.mysql.rds.aliyuncs.com:3306
に設定されています。-l
パラメータは、オンプレミスマシンのポート 13306 である13306
に設定されています。macOS または Linux コンピュータ
[ターミナル] を開き、
ali-instance-cli
ツールが保存されているディレクトリに移動して、次のコマンドを実行し、ポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306
このコマンドでは、
-i
パラメータは、ジャンプサーバー ECS インスタンスの ID であるi-bp1******
に設定されています。-r
パラメータは、MySQL のエンドポイントであるrm-******.mysql.rds.aliyuncs.com:3306
に設定されています。-l
パラメータは、オンプレミスマシンのポート 13306 である13306
に設定されています。MySQL クライアントを使用して MySQL データベースにアクセスします。
ポート転送が有効になったら、オンプレミスマシンのポート 13306 を使用して MySQL にアクセスできます。
MySQL クライアントを例として使用しています。 業務要件に基づいて適切な接続ツールを選択できます。
ポート転送。
使用する
127.0.0.1:13306
で MySQL サービスにアクセスします。