Session Manager CLI (ali-instance-cli) を使用して、Elastic Compute Service (ECS) インスタンスのポートをオンプレミスコンピューターのポートにマッピングできます。 これにより、Cloud Assistant Agentを使用して、インターネットに接続せずにインスタンス上のサービスにアクセスできます。 このトピックでは、Session Manager CLIを使用してポート転送機能を実装し、インターネットに接続せずにECSインスタンスにアクセスする方法について説明します。
ポート転送機能は、基になるレベルのWebSocketに基づいており、TCPを介して動作します。 したがって、この機能はTCPポート転送のみをサポートし、UDPポート転送はサポートしません。
ポート転送とは何ですか?
Session Manager CLI (ali-instance-cli) のポート転送機能は、Cloud Assistantに基づいて実装されています。 ポート転送機能は、インスタンスのポートを、ali-instance-cliがインストールされているオンプレミスマシンのポートにマッピングできます。 また、ポート転送機能により、インスタンスはジャンプサーバーとして機能し、パブリックネットワーク接続のない環境やプライベートネットワークを介したサービスアクセスのために、オンプレミスポートを別のホストのポートにマッピングできます。
シナリオ1: インターネット接続なしでインスタンスに接続する
ポート転送機能を使用して、インターネットに接続されていないECSインスタンスのリモートアクセスポートをオンプレミスポートにマッピングできます。 その後、ツールを使用してオンプレミスポートにアクセスし、インターネットに接続せずにECSインスタンスに接続できます。
ログインするインスタンスにパブリックIPアドレスが割り当てられている場合、セキュリティグループに拒否ルールを追加して、インスタンスへのリモートアクセス用のポートを無効にし、インスタンスのセキュリティを向上させることができます。
シナリオ2: インターネット接続なしでインスタンスのサービスにアクセスする
ポート転送機能を使用して、NGINXやApacheポートなど、インターネットに接続されていないECSインスタンスのサービスポートをオンプレミスポートにマッピングできます。 これにより、ECSインスタンスにデプロイされたサービスにアクセスできます。
シナリオ3: ジャンプサーバーとしてインスタンスを使用した他のホストのサービスへのアクセス
ポート転送機能を使用して、インスタンスをジャンプサーバーとして使用し、インスタンスと同じ仮想プライベートクラウド (VPC) にあるネットワークホスト上のサービスにアクセスできます。 たとえば、VPC内の別のインスタンスにデプロイされたMySQLサービスにアクセスできます。
ポート転送の仕組み
| |
|
準備
セッションマネージャの有効化
接続するインスタンスが [実行中] 状態であるかどうかを確認します
Cloud Assistant Agentが接続先のインスタンスにインストールされているかどうかを確認します。
セッションマネージャを使用するRAM (Resource Access Management) ユーザーの資格情報を準備する
1. ali-instance-cliのインストールと設定
すでにali-instance-cliをインストールして設定している場合は、この手順をスキップしてください。
1.1 ali-instance-cliのインストール
コンピューターにali-instance-cliをインストールします。 インストール操作は、オペレーティングシステムによって異なります。
Windows
こちらをクリックしてali-instance-cli for 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をインストールします。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/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 Secret で構成されます。 詳細については、このトピックの「Session Managerを使用するRAM (Resource Access Management) ユーザーの資格情報の準備」をご参照ください。
Windows
[スタート] アイコンを右クリックし、[実行] を選択します。 [実行] ダイアログボックスで [cmd] と入力し、
[enter]
キーを押してコマンドプロンプトウィンドウを開きます。次のコマンドを実行して、ali-instance-cli.exeが存在するディレクトリに切り替えます。 この例では、
C:\Users\test
ディレクトリが使用されています。cd C:\Users\test
資格情報を設定します。 次のタイプの資格情報がサポートされています。
AccessKey ペア
次のコマンドを実行し、プロンプトに従ってAccess Key Id、Access Key Secret、およびRegion 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 secret、セキュリティトークンサービス (sts) トークン
に置き換えます。資格情報URI
次のコマンドを実行し、プロンプトに従ってCredentials URIおよびRegion Idパラメーターを設定します。
ali-instance-cli.exe configure --mode=CredentialsURI
次のコマンド出力は、資格情報が設定されていることを示します。
macOSまたはLinux
ali-instance-cliが存在するディレクトリに移動します。 この例では、現在のユーザーのルートディレクトリ (
〜
) が使用されます。cd ~
資格情報を設定します。
AccessKey ペア
次のコマンドを実行し、プロンプトに従ってAccess Key Id、Access Key Secret、およびRegion 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 secret、sts token
に置き換えます。資格情報URI
次のコマンドを実行し、プロンプトに従ってCredentials URIおよびRegion 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
パラメーターはi-bp1 ******
に設定されます。これは、接続するインスタンスのIDです。-r
パラメーターは、インスタンスのSSHサービスである22
に設定されています。-l
パラメーターは8080
に設定されます。これは、オンプレミスのコンピューターでポート8080です。macOSまたはLinuxコンピュータ
ターミナルを開き、
ali-instance-cli
ツールが格納されているディレクトリに移動し、次のコマンドを実行してポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r 22 -l 8080
このコマンドでは、
-i
パラメーターはi-bp1 ******
に設定されます。これは、接続するインスタンスのIDです。-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
パラメーターの値はi-bp1 ******
です。これは、接続するインスタンスのIDです。-r
パラメーターは、インスタンスのRDPサービスである3389
に設定されています。-l
パラメーターは8080
に設定されます。これは、オンプレミスのコンピューターでポート8080です。macOSまたはLinuxコンピュータ
ターミナルを開き、
ali-instance-cli
ツールが格納されているディレクトリに移動し、次のコマンドを実行してポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r 3389 -l 8080
このコマンドでは、
-i
パラメーターの値はi-bp1 ******
です。これは、接続するインスタンスのIDです。-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
パラメーターはi-bp1 ******
に設定されます。これは、接続するインスタンスのIDです。-r
パラメーターは、インスタンスのNGINXポートである80
に設定されています。-l
パラメーターは8080
に設定されます。これは、オンプレミスのコンピューターでポート8080です。macOSまたはLinuxコンピュータ
ターミナルを開き、
ali-instance-cli
ツールが格納されているディレクトリに移動し、次のコマンドを実行してポート転送を実行します。./ali-instance-cli portforward -i i-bp1****** -r 80 -l 8080
このコマンドでは、
-i
パラメーターはi-bp1 ******
に設定されます。これは、接続するインスタンスのIDです。-r
パラメーターは、インスタンスのNGINXポートである80
に設定されています。-l
パラメーターは8080
に設定されます。これは、オンプレミスのコンピューターでポート8080です。NGINXサービスにアクセスします。
次の例は、ブラウザでNGINXサービスのデフォルトページにアクセスする方法を示しています。
ポート転送。
http:// 127.0.0.1:80
を使用して、デフォルトのNGINXサービスページにアクセスします。
例3: ECSインスタンスをジャンプサーバーとして使用してプライベートMySQLインスタンスにアクセスする
Example description
次の図に示すように、この例では、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サービスにアクセスします。