

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SSH を使用して Amazon EMR クラスタープライマリノードに接続する
<a name="emr-connect-master-node-ssh"></a>

Secure Shell (SSH) とは、リモートコンピュータとの安全な接続を確立するために使用できるネットワークプロトコルです。接続後、ローカルコンピュータ上のターミナルは、リモートコンピュータで実行されているかのように動作します。ローカルで発行したコマンドがリモートコンピュータで実行され、リモートコンピュータからのコマンドの出力はターミナルウィンドウに表示されます。

で SSH を使用する場合 AWS、クラウドで実行されている仮想サーバーである EC2 インスタンスに接続します。Amazon EMR で作業するときの SSH の最も一般的な用途は、クラスターのプライマリノードとして動作する EC2 インスタンスへの接続です。

SSH を使用してプライマリノードに接続すると、クラスターをモニタリングし、操作できます。例えば、プライマリノードで Linux コマンドを発行したり、Hive や Pig などのアプリケーションをインタラクティブに実行したりできます。また、ディレクトリのブラウズやログファイルの読み取りなども可能です。SSH 接続にトンネルを作成して、プライマリノードでホストされるウェブインターフェイスを表示することもできます。詳細については、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。

SSH を使用してプライマリノードに接続するには、プライマリノードのパブリック DNS 名が必要です。また、プライマリノードに関連付けられるセキュリティグループには、SSH 接続元のクライアントを含むソースからの SSH (TCP ポート 22) トラフィックを許可するインバウンドルールがある必要があります。クライアントからの SSH 接続を許可するルールの追加が必要になる場合があります。セキュリティグループのルールの変更に関する詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EMR クラスターのセキュリティグループを使用してネットワークトラフィックを制御する](emr-security-groups.md)」と「[セキュリティグループにルールを追加する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)」を参照してください。

## プライマリノードのパブリック DNS 名を取得する
<a name="emr-connect-master-dns"></a>

プライマリパブリック DNS 名は、Amazon EMR コンソールと AWS CLIを使用して取得できます。

------
#### [ Console ]

**新しいコンソールを使用してプライマリノードのパブリック DNS 名を取得するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[EMR on EC2]** で **[クラスター]** を選択し、パブリック DNS 名を取得するクラスターを選択します。

1. クラスターの詳細ページの **[概要]** セクションに表示される **[プライマリノードのパブリック DNS]** 値を書き留めます。

------
#### [ CLI ]<a name="emr-connect-master-dns-cli"></a>

**を使用してプライマリノードのパブリック DNS 名を取得するには AWS CLI**

1. クラスター識別子を取得するには、次のコマンドを入力します。

   ```
   1. aws emr list-clusters
   ```

   出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

   ```
   "Status": {
       "Timeline": {
           "ReadyDateTime": 1408040782.374,
           "CreationDateTime": 1408040501.213
       },
       "State": "WAITING",
       "StateChangeReason": {
           "Message": "Waiting after step completed"
       }
   },
   "NormalizedInstanceHours": 4,
   "Id": "j-2AL4XXXXXX5T9",
   "Name": "My cluster"
   ```

1. クラスターのパブリック DNS 名を含むクラスターインスタンスのリストを表示するには、次のいずれかのコマンドを入力します。*j-2AL4XXXXXX5T9* の部分を、前のコマンドで返されたクラスター ID に置き換えてください。

   ```
   1. aws emr list-instances --cluster-id j-2AL4XXXXXX5T9
   ```

   または:

   ```
   aws emr describe-cluster --cluster-id j-2AL4XXXXXX5T9
   ```

   出力には、DNS 名と IP アドレスを含むクラスターインスタンスのリストが表示されます。`PublicDnsName` の値を書き留めます。

   ```
   "Status": {
       "Timeline": {
           "ReadyDateTime": 1408040779.263,
           "CreationDateTime": 1408040515.535
       },
       "State": "RUNNING",
       "StateChangeReason": {}
   },
   "Ec2InstanceId": "i-e89b45e7",
   "PublicDnsName": "ec2-###-##-##-###.us-west-2.compute.amazonaws.com"
   
   "PrivateDnsName": "ip-###-##-##-###.us-west-2.compute.internal",
   "PublicIpAddress": "##.###.###.##",
   "Id": "ci-12XXXXXXXXFMH",
   "PrivateIpAddress": "###.##.#.###"
   ```

詳細については、「[AWS CLIの Amazon EMR コマンド](https://docs.aws.amazon.com/cli/latest/reference/emr)」を参照してください。

------

## Linux、Unix、または Mac OS X で SSH と Amazon EC2 プライベートキーを使用してプライマリノードに接続する
<a name="emr-connect-linux"></a>

プライベートキーファイルで認証された SSH 接続を作成するには、クラスター起動時に Amazon EC2 キーペアのプライベートキーを指定する必要があります。キーペアへのアクセスに関する詳細は、「[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)」の「*Amazon EC2 のキーペア*」を参照してください。

Linux コンピュータには、デフォルトで SSH クライアントが含まれている可能性があります。たとえば、ほとんどの Linux、Unix、および Mac OS オペレーティングシステムには OpenSSH がインストールされています。SSH クライアントがあるかどうかを確認するには、コマンドラインで **ssh** と入力します。ご使用のコンピュータでこのコマンドが認識されない場合、プライマリノードに接続するために SSH クライアントをインストールします。OpenSSH プロジェクトが、SSH ツールの完全なスイートの無料実装を提供しています。詳細については、[OpenSSH](http://www.openssh.org/) のウェブサイトを参照してください。

次の手順は、Linux、Unix、および Mac OS X で、Amazon EMR プライマリノードへの SSH 接続を開く方法です。<a name="emr-keypair-file-permission-config"></a>

**キーペアのプライベートキーのファイルアクセス許可を設定するには**

Amazon EC2 キーペアのプライベートキーを使用して SSH 接続を作成する前に、キー所有者のみがファイルへのアクセス権限を持つように `.pem` ファイルに対するアクセス許可を設定しておく必要があります。これは、ターミナルまたは を使用して SSH 接続を作成する場合に必要です AWS CLI。

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. `.pem` ファイルを見つけます。この手順では、ファイル名が `mykeypair.pem` であり、現在のユーザーのホームディレクトリに保存されていることを想定しています。

1. 次のコマンドを入力してアクセス許可を設定します。*\$1/mykeypair.pem* の部分を、キーペアのプライベートキーファイルの完全修飾パスとファイル名に置き換えてください。例: `C:/Users/<username>/.ssh/mykeypair.pem`。

   ```
   1. chmod 400 ~/mykeypair.pem
   ```

   `.pem` ファイルに対するアクセス許可を設定していない場合、キーファイルが保護されておらず、キーが拒否されることを示すエラーが表示されます。接続するためにキーペアのプライベートキーファイルに対するアクセス許可を設定する必要があるのは、このファイルを最初に使用するときだけです。<a name="emr-ssh"></a>

**ターミナルを使用してプライマリノードに接続するには**

1. ターミナルウィンドウを開きます。Mac OS X で、**[Applications] > [Utilities] > [Terminal]** を選択します。他の Linux ディストリビューションでは、ターミナルは通常、**[Applications] > [Accessories] > [Terminal]** にあります。

1. プライマリノードへの接続を確立するには、次のコマンドを入力します。*ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com* はクラスターのプライマリパブリック DNS 名に、*\$1/mykeypair.pem* は `.pem` ファイルの完全修飾パスとファイル名に置き換えます。例: `C:/Users/<username>/.ssh/mykeypair.pem`。

   ```
   1. ssh hadoop@ec2-###-##-##-###.compute-1.amazonaws.com -i ~/mykeypair.pem
   ```
**重要**  
Amazon EMR プライマリノードに接続するときは、ログイン名 `hadoop` を使用する必要があります。このログイン名を使用しない場合、`Server refused our key` のようなエラーが表示されることがあります。

1. 警告は、接続先ホストの正当性を検証できないことを示しています。`yes` を入力して、操作を続けます。

1.  プライマリノードに対する操作が終了したら、次のコマンドを入力して SSH 接続を閉じます。

   ```
   exit
   ```

SSH を使用したプライマリノードへの接続に問題がある場合は、「[インスタンスへの接続に関するトラブルシューティング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)」を参照してください。

## Windows で SSH を使用してプライマリノードに接続する
<a name="emr-connect-win"></a>

Windows ユーザーは、PuTTY などの SSH クライアントを使用して、プライマリノードに接続できます。Amazon EMR プライマリノードに接続する前に、PuTTY と PuTTYgen をダウンロードしてインストールしてください。これらのツールは、[PuTTY のダウンロードページ](http://www.chiark.greenend.org.uk/~sgtatham/putty/)からダウンロードできます。

PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (`.pem`) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (`.ppk`) に変換します。PuTTY を使用してプライマリノードへの接続を試みる前に、キーをこの形式 (`.ppk`) に変換する必要があります。

キーの変換について詳しくは、「*Amazon EC2 ユーザーガイド*」の「[Converting your private key using PuTTYgen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)」を参照してください。<a name="emr-ssh-windows"></a>

**PuTTY を使用してプライマリノードに接続するには**

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. `putty.exe` を開きます。Windows のプログラムの一覧から PuTTY を起動することもできます。

1. 必要に応じて、[**Category**] リストで、[**Session**] を選択します。

1. [**Host Name (or IP address)**] に、「`hadoop@`*MasterPublicDNS*」と入力します。たとえば、`hadoop@`*ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com* です。

1. [**Category**] リストで、[**Connection]、[SSH**] の順に選択し、[**Auth**] を選択します。

1. [**Private key file for authentication**] では、[**Browse**] をクリックし、以前に生成した `.ppk` ファイルを選択します。

1. **[Open]** を選択し、**[Yes]** をクリックして PuTTY のセキュリティ警告を閉じます。
**重要**  
プライマリノードにログインするときに、ユーザー名の入力を求められた場合は、「`hadoop`」と入力します。

1. プライマリノードに対する操作が終了したら、PuTTY を閉じることで SSH 接続を閉じることができます。
**注記**  
SSH 接続のタイムアウト防止には、[**Category**] リストで [**Connection**] をクリックし、[**Enable TCP\$1keepalives**] オプションを選択します。PuTTY にアクティブな SSH セッションがある場合は、PuTTY のタイトルバーのコンテキストを開き (右クリック)、**[Change Settings]** を選択することで設定を変更できます。

SSH を使用したプライマリノードへの接続に問題がある場合は、「[インスタンスへの接続に関するトラブルシューティング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)」を参照してください。

## を使用してプライマリノードに接続する AWS CLI
<a name="emr-connect-cli"></a>

 AWS CLI Windows および Linux、Unix、Mac OS X の を使用して、プライマリノードとの SSH 接続を作成できます。プラットフォームに関係なく、プライマリノードのパブリック DNS 名と Amazon EC2 キーペアのプライベートキーが必要です。Linux、Unix、または Mac OS X AWS CLI で を使用している場合は、 に示すように、プライベートキー (`.pem` または `.ppk`) ファイルにもアクセス許可を設定する必要があります[キーペアのプライベートキーのファイルアクセス許可を設定するには](#emr-keypair-file-permission-config)。<a name="emr-ssh-cli"></a>

**を使用してプライマリノードに接続するには AWS CLI**

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. クラスター識別子を取得するには、次のように入力します。

   ```
   1. aws emr list-clusters
   ```

   出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

   ```
   "Status": {
       "Timeline": {
           "ReadyDateTime": 1408040782.374,
           "CreationDateTime": 1408040501.213
       },
       "State": "WAITING",
       "StateChangeReason": {
           "Message": "Waiting after step completed"
       }
   },
   "NormalizedInstanceHours": 4,
   "Id": "j-2AL4XXXXXX5T9",
   "Name": "AWS CLI cluster"
   ```

1. プライマリノードへの SSH 接続を開くには、次のコマンドを入力します。次の例で、*j-2AL4XXXXXX5T9* をクラスター ID に、*\$1/mykeypair.key* を `.pem` ファイル (Linux、Unix、および Mac OS X の場合) または `.ppk` ファイル (Windows の場合) の完全修飾パスとファイル名に置き換えてください。例: `C:\Users\<username>\.ssh\mykeypair.pem`。

   ```
   aws emr ssh --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key						
   ```

1. プライマリノードでの作業が完了したら、 AWS CLI ウィンドウを閉じます。

   詳細については、「[AWS CLIの Amazon EMR コマンド](https://docs.aws.amazon.com/cli/latest/reference/emr)」を参照してください。SSH を使用したプライマリノードへの接続に問題がある場合は、「[インスタンスへの接続に関するトラブルシューティング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)」を参照してください。

# Amazon EMR サービスポート
<a name="emr-service-ports"></a>

**注記**  
Amazon EMR のコンポーネントのインターフェイスとサービスポートを次に示します。これはサービスポートの完全なリストではありません。SSL ポートや各種プロトコルなど、デフォルト以外のサービスは記載していません。

**重要**  
セキュリティグループのルールを編集してポートを開くときには注意が必要です。ワークロードの実行に必要なプロトコルとポートには、必ず信頼できる認証済みのクライアントからのトラフィックのみを許可するルールを追加してください。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-service-ports.html)

# Amazon EMR クラスターでホストされているウェブインターフェイスを表示する
<a name="emr-web-interfaces"></a>

**重要**  
カスタムセキュリティグループを設定して、これらのウェブインターフェイスへのインバウンドアクセスを許可することができます。インバウンドトラフィックを許可するポートでは、セキュリティ脆弱性が生じる可能性があることに注意してください。カスタムセキュリティグループを注意深く確認して、脆弱性を最小限に抑えます。詳細については、「[Amazon EMR クラスターのセキュリティグループを使用してネットワークトラフィックを制御する](emr-security-groups.md)」を参照してください。

EMR クラスターにインストールする Hadoop やその他のアプリケーションは、プライマリノードでホストされるウェブサイトとしてユーザーインターフェイスを公開します。セキュリティ上の理由のため、Amazon EMR マネージドセキュリティグループを使用する場合、これらのウェブサイトは、プライマリノードのローカルウェブサーバー上のみで使用できます。そのため、ウェブインターフェイスを表示するにはプライマリノードに接続する必要があります。詳細については、「[SSH を使用して Amazon EMR クラスタープライマリノードに接続する](emr-connect-master-node-ssh.md)」を参照してください。Hadoop は、コアおよびタスクノードでホストされるウェブサイトとしてもユーザーインターフェイスを公開します。これらのウェブサイトも、ノードのローカルウェブサーバーでのみ利用できます。

次の表は、クラスターインスタンスで表示できるウェブインターフェイスを示しています。これらの Hadoop インターフェイスは、すべてのクラスターで使用できます。マスターインスタンスインターフェイスの場合は、*master-public-dns-name* を Amazon EMR コンソールのクラスターの **[概要]** タブにリストされている **[マスターパブリック DNS]** に置き換えてください。コアおよびタスクインスタンスのインターフェイスについては、*coretask-public-dns-name* をインスタンスの**パブリック DNS 名**に置き換えます。インスタンスの **[パブリック DNS 名]** を見つけるには、Amazon EMR コンソールでリストからクラスターを選択し、**[ハードウェア]** タブを選択します。次に、接続するインスタンスを含むインスタンスグループの **[ID]** を選択し、インスタンスに対してリストされた **[パブリック DNS 名]** を書き留めます。


|  インターフェイスの名前 |   [URI]  | 
| --- | --- | 
| Flink History Server（EMR バージョン 5.33 以降） | http://master-public-dns-name:8082/ | 
| Ganglia | http://master-public-dns-name/ganglia/ | 
| Hadoop HDFS NameNode (EMR バージョン 6.x より前) | http://master-public-dns-name:50070/ | 
| Hadoop HDFS NameNode (EMR バージョン 6.x より前) | https://master-public-dns-name:50470/ | 
| Hadoop HDFS NameNode (EMR バージョン 6.x) | http://master-public-dns-name:9870/ | 
| Hadoop HDFS NameNode (EMR バージョン 6.x) | https://master-public-dns-name:9871/ | 
| Hadoop HDFS DataNode (EMR バージョン 6.x より前) | http://coretask-public-dns-name:50075/ | 
| Hadoop HDFS DataNode (EMR バージョン 6.x より前) | https://coretask-public-dns-name:50475/ | 
| Hadoop HDFS DataNode (EMR バージョン 6.x) | http://coretask-public-dns-name:9864/ | 
| Hadoop HDFS DataNode (EMR バージョン 6.x) | https://coretask-public-dns-name:9865/ | 
| HBase | http://master-public-dns-name:16010/ | 
| Hue | http://master-public-dns-name:8888/ | 
| JupyterHub | https://master-public-dns-name:9443/ | 
| Livy | http://master-public-dns-name:8998/ | 
| Spark HistoryServer | http://master-public-dns-name:18080/ | 
| Tez | http://master-public-dns-name:8080/tez-ui | 
| YARN NodeManager | http://coretask-public-dns-name:8042/ | 
| YARN ResourceManager | http://master-public-dns-name:8088/ | 
| Zeppelin | http://master-public-dns-name:8890/ | 

プライマリノードで利用できるアプリケーション固有のインターフェイスの中には、コアノードとタスクノードでは利用できないものもあるため、このドキュメントの手順は Amazon EMR プライマリノードに特化しています。コアノードおよびタスクノードのウェブインターフェイスには、プライマリノードのウェブインターフェイスにアクセスする場合と同じ手順でアクセスできます。

プライマリノードのウェブインターフェイスにアクセスするには、いくつかの方法があります。最も簡単な方法は、SSH を使用してプライマリノードに接続し、テキストベースのブラウザ Lynx を使用して SSH クライアントでウェブサイトを表示する方法です。ただし、Lynx はユーザーインターフェイスが制限されたテキストベースのブラウザであり、グラフィックを表示できません。次の例では、Lynx を使用して Hadoop ResourceManager のインターフェイスを開く方法を示します (SSH を使用してプライマリノードにログインするときに、Lynx の URL も指定されます)。

```
lynx http://ip-###-##-##-###.us-west-2.compute.internal:8088/
```

すべてのブラウザ機能を提供する、プライマリノードのウェブインターフェイスにアクセスするには、あと 2 つの方法があります。次のいずれかを選択します。
+ オプション 1 (技術的知識のあるユーザー向け): SSH クライアントを使用してプライマリノードに接続し、ローカルポートフォワーディングを使って SSH トンネリングを設定します。次に、インターネットブラウザを使用してプライマリノードでホストされるウェブインターフェイスを開きます。この方法では、SOCKS プロキシを使用せずに、ウェブインターフェイスへのアクセスを設定できます。
+ オプション 2 (新しいユーザー向け): SSH クライアントを使用してプライマリノードに接続し、ダイナミックポートフォワーディングを使用して SSH トンネリングを設定します。次に、Firefox 用の FoxyProxy や Chrome 用の SwitchyOmega などのアドオンを使用して SOCKS プロキシの設定を管理するようにインターネットブラウザを設定します。この方法では、テキストパターンに基づいて自動的に URL をフィルタリングし、プロキシの設定をプライマリノードの DNS 名の形式に合致するドメインに限定できます。Firefox および Google Chrome 用に FoxyProxy を設定する方法の詳細については、「[オプション 2、パート 2: Amazon EMR クラスタープライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する](emr-connect-master-node-proxy.md)」を参照してください。

**注記**  
クラスター設定経由でアプリケーションが実行されるポートを変更すると、Amazon EMR コンソールでポートへのハイパーリンクが更新されません。これは、コンソールに `server.port` 設定を読み取る機能がないためです。

Amazon EMR バージョン 5.25.0 以降では、SSH 接続を介してウェブプロキシを設定しなくても、コンソールから Spark 履歴サーバー UI にアクセスできます。詳細については、「[永続 Spark History Server へのワンクリックアクセス](https://docs.aws.amazon.com/emr/latest/ManagementGuide/app-history-spark-UI.html)」を参照してください。

**Topics**
+ [オプション 1: ローカルポートフォワーディングを使用して Amazon EMR プライマリノードへの SSH トンネルをセットアップする](emr-ssh-tunnel-local.md)
+ [オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする](emr-ssh-tunnel.md)
+ [オプション 2、パート 2: Amazon EMR クラスタープライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する](emr-connect-master-node-proxy.md)

# オプション 1: ローカルポートフォワーディングを使用して Amazon EMR プライマリノードへの SSH トンネルをセットアップする
<a name="emr-ssh-tunnel-local"></a>

プライマリノードのローカルウェブサーバーに接続するために、コンピュータとプライマリノードの間に SSH トンネルを作成します。これは*ポートフォワーディング*とも呼ばれます。SOCKS プロキシを使用しない場合は、ローカルポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップすることができます。ローカルポートフォワーディングでは、トラフィックをプライマリノードのローカルウェブサーバーにある特定のリモートポートに転送するために使用する、未使用のローカルポートを指定します。

ローカルポートフォワーディングを使用して SSH トンネルをセットアップするには、プライマリノードのパブリック DNS 名と、キーペアのプライベートキーファイルが必要です。マスターパブリック DNS 名を特定する方法については、「[プライマリノードのパブリック DNS 名を取得する](emr-connect-master-node-ssh.md#emr-connect-master-dns)」を参照してください。キーペアへのアクセスに関する詳細は、「[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)」の「*Amazon EC2 のキーペア*」を参照してください。プライマリノード上で表示するサイトの詳細については、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。

## OpenSSH でローカルポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする
<a name="ssh-tunnel-local-linux"></a><a name="tunnel-local-linux"></a>

**ターミナルでローカルポートフォワーディングを使用して SSH トンネルをセットアップするには**

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. ターミナルウィンドウを開きます。Mac OS X で、**[Applications] > [Utilities] > [Terminal]** を選択します。他の Linux ディストリビューションでは、ターミナルは通常、**[Applications] > [Accessories] > [Terminal]** にあります。

1. 次のコマンドを入力して、ローカルマシンで SSH トンネルを開きます。このコマンド例では、ローカルポート 8157 (ランダムに選択された未使用のローカルポート) からマスターノードのローカルウェブサーバーのポート 8088 にトラフィックを転送することによって、ResourceManager ウェブインターフェイスにアクセスします。 

   コマンドの、*\$1/mykeypair.pem* を `.pem` ファイルの場所とファイル名に、*ec2-\$1\$1\$1-\$1\$1\$1.compute-1.amazonaws.com* をクラスターのマスターパブリック DNS 名に置き換えます。別のウェブインターフェイスにアクセスするには、`8088` を該当するポート番号に置き換えます。たとえば、Zeppelin インターフェイスの場合、`8088` を `8890` に置き換えます。

   ```
   ssh -i ~/mykeypair.pem -N -L 8157:ec2-###-##-##-###.compute-1.amazonaws.com:8088 hadoop@ec2-###-##-##-###.compute-1.amazonaws.com
   ```

   `-L` はローカルポートフォワーディングを使用することを示します。これにより、マスターノードのローカルウェブサーバーの指定したリモートポートにデータを転送するために使用するローカルポートを指定できます。

   このコマンドを発行すると、ターミナルは開いたままになり、応答を返しません。 

1. ブラウザから ResourceManager ウェブインターフェイスを開くには、アドレスバーに `http://localhost:8157/` と入力します。

1. プライマリノードのウェブインターフェイスに対する操作が終了したら、ターミナルウィンドウを閉じます。

# オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする
<a name="emr-ssh-tunnel"></a>

プライマリノードのローカルウェブサーバーに接続するために、コンピュータとプライマリノードの間に SSH トンネルを作成します。これは*ポートフォワーディング*とも呼ばれます。ダイナミックポートフォワーディングを使用して SSH トンネルを作成する場合、指定した未使用のローカルポートにルーティングされたすべてのトラフィックが、プライマリノードのローカルウェブサーバーに転送されます。これにより、SOCKS プロキシが作成されます。これで、FoxyProxy や SwitchyOmega などのアドオンを使用して SOCKS プロキシの設定を管理するようにインターネットブラウザを設定できます。

プロキシ管理のアドオンを使用すると、テキストパターンに基づいて自動的に URL をフィルタリングし、プロキシの設定をプライマリノードのパブリック DNS 名の形式に合致するドメインに限定することができます。プライマリノードでホストされているウェブサイトとインターネットのウェブサイトの表示を切り替えると、ブラウザのアドオンで自動的にプロキシのオンとオフが切り替えられます。

作業を始める前に、プライマリノードのパブリック DNS 名とキーペアのプライベートキーファイルが必要です。プライマリパブリック DNS 名を特定する方法については、「[プライマリノードのパブリック DNS 名を取得する](emr-connect-master-node-ssh.md#emr-connect-master-dns)」を参照してください。キーペアへのアクセスに関する詳細は、「[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)」の「*Amazon EC2 のキーペア*」を参照してください。プライマリノード上で表示するサイトの詳細については、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。

## OpenSSH でダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする
<a name="emr-ssh-tunnel-linux"></a><a name="emr-ssh-tunnel-unix"></a>

**OpenSSH でダイナミックポートフォワーディングを使用して SSH トンネルをセットアップするには**

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. ターミナルウィンドウを開きます。Mac OS X で、**[Applications] > [Utilities] > [Terminal]** を選択します。他の Linux ディストリビューションでは、ターミナルは通常、**[Applications] > [Accessories] > [Terminal]** にあります。

1. ローカルコンピュータで SSH トンネルを開くには、次のコマンドを入力します。*\$1/mykeypair.pem* を `.pem` ファイルの場所とファイル名に、*8157* を未使用のローカルポート番号に、*ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com* をクラスターのプライマリパブリック DNS 名に置き換えます。

   ```
   1. ssh -i ~/mykeypair.pem -N -D 8157 hadoop@ec2-###-##-##-###.compute-1.amazonaws.com
   ```

   このコマンドを発行すると、ターミナルは開いたままになり、応答を返しません。
**注記**  
`-D` はダイナミックポートフォワーディングを使用することを示し、プライマリノードのローカルウェブサーバーのすべてのリモートポートにデータを転送するために使用するローカルポートを指定できます。ダイナミックポートフォワーディングでは、コマンドで指定されたポートでローカル SOCKS プロキシのリスニングが実行されます。

1. トンネルがアクティブになった後、ブラウザの SOCKS プロキシを設定します。詳細については、「[オプション 2、パート 2: Amazon EMR クラスタープライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する](emr-connect-master-node-proxy.md)」を参照してください。

1. プライマリノードのウェブインターフェイスに対する操作が終了したら、ターミナルウィンドウを閉じます。

## で動的ポート転送を使用して SSH トンネルを設定する AWS CLI
<a name="emr-ssh-tunnel-cli"></a>

 AWS CLI Windows では 、Linux、Unix、および Mac OS X では を使用して、プライマリノードとの SSH 接続を作成できます。Linux、Unix、または Mac OS X AWS CLI で を使用している場合は、 に示すように、 `.pem`ファイルに アクセス許可を設定する必要があります[キーペアのプライベートキーのファイルアクセス許可を設定するには](emr-connect-master-node-ssh.md#emr-keypair-file-permission-config)。Windows AWS CLI で を使用している場合は、パス環境変数に PuTTY が表示される必要があります。表示されない場合、OpenSSH や PuTTY が使用できないなどのエラーが表示されることがあります。<a name="ssh-tunnel-cli"></a>

**で動的ポート転送を使用して SSH トンネルを設定するには AWS CLI**

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. 「[を使用してプライマリノードに接続する AWS CLI](emr-connect-master-node-ssh.md#emr-connect-cli)」に示されているように、プライマリノードへの SSH 接続を作成します。

1. クラスター識別子を取得するには、次のように入力します。

   ```
   1. aws emr list-clusters
   ```

   出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

   ```
   "Status": {
       "Timeline": {
           "ReadyDateTime": 1408040782.374,
           "CreationDateTime": 1408040501.213
       },
       "State": "WAITING",
       "StateChangeReason": {
           "Message": "Waiting after step completed"
       }
   },
   "NormalizedInstanceHours": 4,
   "Id": "j-2AL4XXXXXX5T9",
   "Name": "AWS CLI cluster"
   ```

1. 次のコマンドを入力して、ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルを開きます。次の例で、*j-2AL4XXXXXX5T9* をクラスター ID に、*\$1/mykeypair.key* を `.pem` ファイル (Linux、Unix、および Mac OS X の場合) または `.ppk` ファイル (Windows の場合) の場所とファイル名に置き換えてください。

   ```
   aws emr socks --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key						
   ```
**注記**  
socks コマンドは、自動的にポート 8157 でダイナミックポートフォワーディングを設定します。現在、この設定は変更できません。

1. トンネルがアクティブになった後、ブラウザの SOCKS プロキシを設定します。詳細については、「[オプション 2、パート 2: Amazon EMR クラスタープライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する](emr-connect-master-node-proxy.md)」を参照してください。

1. プライマリノードのウェブインターフェイスの操作が完了したら、 AWS CLI ウィンドウを閉じます。

   での Amazon EMR コマンドの使用の詳細については AWS CLI、「」を参照してください[https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)。

## PuTTY を使用してプライマリノードへの SSH トンネルをセットアップする
<a name="emr-ssh-tunnel-win"></a>

Windows ユーザーは、PuTTY などの SSH クライアントを使用して、プライマリノードへの SSH トンネルを作成できます。Amazon EMR プライマリノードに接続する前に、PuTTY と PuTTYgen をダウンロードしてインストールしてください。これらのツールは、[PuTTY のダウンロードページ](http://www.chiark.greenend.org.uk/~sgtatham/putty/)からダウンロードできます。

PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (`.pem`) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (`.ppk`) に変換します。PuTTY を使用してプライマリノードへの接続を試みる前に、キーをこの形式 (`.ppk`) に変換する必要があります。

キーの変換について詳しくは、「*Amazon EC2 ユーザーガイド*」の「[Converting your private key using PuTTYgen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)」を参照してください。<a name="emr-ssh-tunnel-putty"></a>

**PuTTY でダイナミックポートフォワーディングを使用して SSH トンネルをセットアップするには**

1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「[Amazon EMR に接続する前に: インバウンドトラフィックを承認する](emr-connect-ssh-prereqs.md)」を参照してください。

1. `putty.exe` をダブルクリックして PuTTY を起動します。Windows のプログラムの一覧から PuTTY を起動することもできます。
**注記**  
既にプライマリノードとのアクティブな SSH セッションがある場合は、PuTTY のタイトルバーを右クリックし、**[Change Settings]** を選択することでトンネルを追加できます。

1. 必要に応じて、[**Category**] リストで、[**Session**] を選択します。

1. [**Host Name (ホスト名)**] フィールドに「**hadoop@***MasterPublicDNS*」と入力します。たとえば、**hadoop@***ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com* です。

1. [**Category**] リストで、[**Connection]、[SSH**] の順に展開し、[**Auth**] を選択します。

1. [**Private key file for authentication**] では、[**Browse**] をクリックし、以前に生成した `.ppk` ファイルを選択します。
**注記**  
PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (`.pem`) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (`.ppk`) に変換します。PuTTY を使用してプライマリノードへの接続を試みる前に、キーをこの形式 (`.ppk`) に変換する必要があります。

1. [**Category**] リストで、[**Connection]、[SSH**] の順に展開し、[**Tunnels**] を選択します。

1. **[Source port]** フィールドに `8157` (未使用のローカルポート) を入力し、**[Add]** を選択します。

1. [**Destination**] フィールドは空白のままにしておきます。

1. [**Dynamic**] オプションと [**Auto**] オプションを選択します。

1. **開く** をクリックします。

1. [**Yes**] を選択して、PuTTY セキュリティ警告を閉じます。
**重要**  
プライマリノードにログインするときに、ユーザー名の入力を求められた場合は、「`hadoop`」と入力します。

1. トンネルがアクティブになった後、ブラウザの SOCKS プロキシを設定します。詳細については、「[オプション 2、パート 2: Amazon EMR クラスタープライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する](emr-connect-master-node-proxy.md)」を参照してください。

1. プライマリノードのウェブインターフェイスに対する操作が終了したら、PuTTY ウィンドウを閉じます。

# オプション 2、パート 2: Amazon EMR クラスタープライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する
<a name="emr-connect-master-node-proxy"></a>

ダイナミックポートフォワーディングによる SSH トンネルを使用する場合、SOCKS プロキシ管理アドオンを使用して、ブラウザでプロキシ設定を管理する必要があります。SOCKS プロキシ管理ツールを使用すると、テキストパターンに基づいて自動的に URL をフィルタリングし、プロキシの設定をプライマリノードのパブリック DNS 名の形式に合致するドメインに限定することができます。プライマリノードでホストされているウェブサイトとインターネットのウェブサイトの表示を切り替えると、ブラウザのアドオンで自動的にプロキシのオンとオフが切り替えられます。プロキシ設定を管理するには、FoxyProxy や SwitchyOmega などのアドオンを使用するようにブラウザを設定します。

SSH トンネルの作成の詳細については、「[オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする](emr-ssh-tunnel.md)」を参照してください。利用可能なウェブインターフェイスの詳細については、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。



プロキシアドオンをセットアップするときに、次の設定を含めてください。
+ ホストアドレスとして **localhost** を使用します。
+ 「[オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする](emr-ssh-tunnel.md)」でプライマリノードの SSH トンネルを確立するために選択したのと同じローカルポート番号を使用します。たとえば、ポート *8157* です。このポートは、接続に使用する PuTTY またはその他のターミナルエミュレータで使用するポート番号とも一致する必要があります。
+ **SOCKS v5** プロトコルを指定します。SOCKS v5 では、オプションでユーザー認可を設定できます。
+ **URL パターン**

  次の URL パターンを許可リストに登録し、ワイルドカードパターンタイプで指定する必要があります。
  + US リージョンのクラスターのパブリック DNS 名と照合する **\$1ec2\$1.\$1compute\$1.amazonaws.com\$1** パターンと **\$110\$1.amazonaws.com\$1** パターン。
  + 他のすべてのリージョンのクラスターのパブリック DNS 名と照合する **\$1ec2\$1.compute\$1** パターンと **\$110\$1.compute\$1** パターン。
  +  Hadoop の JobTracker のログファイルへのアクセスを提供する **10.\$1** パターン。ネットワークアクセスプランと競合する場合は、このフィルターを変更します。
  + `us-east-1` リージョン、および他のすべてのリージョンのクラスターのプライベート (内部) DNS 名とそれぞれ照合する **\$1.ec2.internal\$1** パターンと **\$1.compute.internal\$1** パターン。

## 例: Firefox 用の FoxyProxy を設定する
<a name="emr-connect-foxy-proxy-chrome"></a>

Mozilla Firefox の FoxyProxy Standard (バージョン 7.5.1) の設定を次の例に示します。

FoxyProxy は、プロキシ管理ツールのセットを提供します。これにより、Amazon EMR クラスター内の Amazon EC2 インスタンスで使用されるドメインに対応するパターンと一致する URL についてプロキシサーバーを使用できます。<a name="foxy-proxy"></a>

**Mozilla Firefox を使用して FoxyProxy をインストールして設定するには**

1. Firefoxで、[https://addons.mozilla.org/](https://addons.mozilla.org/) に移動し、FoxyProxy Standard を検索して、指示に従って Firefox に FoxyProxy を追加します。

1. テキストエディタを使用し、次の設定例から `foxyproxy-settings.json` という名前の JSON ファイルを作成します。

   ```
   {
     "k20d21508277536715": {
       "active": true,
       "address": "localhost",
       "port": 8157,
       "username": "",
       "password": "",
       "type": 3,
       "proxyDNS": true,
       "title": "emr-socks-proxy",
       "color": "#0055E5",
       "index": 9007199254740991,
       "whitePatterns": [
         {
           "title": "*ec2*.*compute*.amazonaws.com*",
           "active": true,
           "pattern": "*ec2*.*compute*.amazonaws.com*",
           "importedPattern": "*ec2*.*compute*.amazonaws.com*",
           "type": 1,
           "protocols": 1
         },
         {
           "title": "*ec2*.compute*",
           "active": true,
           "pattern": "*ec2*.compute*",
           "importedPattern": "*ec2*.compute*",
           "type": 1,
           "protocols": 1
         },
         {
           "title": "10.*",
           "active": true,
           "pattern": "10.*",
           "importedPattern": "http://10.*",
           "type": 1,
           "protocols": 2
         },
         {
           "title": "*10*.amazonaws.com*",
           "active": true,
           "pattern": "*10*.amazonaws.com*",
           "importedPattern": "*10*.amazonaws.com*",
           "type": 1,
           "protocols": 1
         },
         {
           "title": "*10*.compute*",
           "active": true,
           "pattern": "*10*.compute*",
           "importedPattern": "*10*.compute*",
           "type": 1,
           "protocols": 1
         },
         {
           "title": "*.compute.internal*",
           "active": true,
           "pattern": "*.compute.internal*",
           "importedPattern": "*.compute.internal*",
           "type": 1,
           "protocols": 1
         },
         {
           "title": "*.ec2.internal* ",
           "active": true,
           "pattern": "*.ec2.internal*",
           "importedPattern": "*.ec2.internal*",
           "type": 1,
           "protocols": 1
         }
       ],
       "blackPatterns": []
     },
     "logging": {
       "size": 100,
       "active": false
     },
     "mode": "patterns",
     "browserVersion": "68.12.0",
     "foxyProxyVersion": "7.5.1",
     "foxyProxyEdition": "standard"
   }
   ```

1. Firefox で **[拡張機能の管理]** ページを開きます (**[about:addons]** に移動し、**[拡張機能]** を選択します)。

1. **[FoxyProxy Standard]** を選択し、その他のオプションボタン (省略記号のようなボタン) を選択します。

1. ドロップダウンから **[Options]** を選択します。

1. 左のメニューから、**[Import Settings]** を選択します。

1. **[Import Settings]** ページで **[Import Settings from FoxyProxy 6.0\$1]** の下の **[Import Settings]** を選択し、作成した `foxyproxy-settings.json` ファイルの場所を参照して、ファイルを選択し **[Open]** を選択します。

1. 既存の設定を上書きして新しい設定を保存するかどうかを確認するメッセージが表示されたら **[OK]** を選択します。

## 例: Chrome 用の SwitchyOmega を設定する
<a name="switchyomega"></a>

Google Chrome の SwitchyOmega 拡張機能のセットアップ方法を次の例に示します。SwitchyOmega を使用すると、複数のプロキシの設定、管理、およびそれらの間の切り替えを実行できます。

**Google Chrome で SwitchyOmega をインストールして設定するには**

1. [https://chrome.google.com/webstore/category/extensions](https://chrome.google.com/webstore/category/extensions) に移動し、**Proxy SwitchyOmega** を検索して、Chrome に追加します。

1. **[New profile]** 選択し、プロファイル名として `emr-socks-proxy` を入力します。

1. **[PAC profile]** を選択し、**[Create]** を選択します。[プロキシ自動設定 (Proxy Auto-Configuration, PAC)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file) ファイルは、ウェブプロキシサーバーに転送する必要があるブラウザリクエストの許可リストを定義するのに役立ちます。

1. **[PAC Script]** フィールドのコンテンツを、ウェブプロキシサーバー経由で転送する URL を定義する次のスクリプトに置き換えます。SSH トンネルのセットアップ時に別のポート番号を指定した場合は、*8157* を指定のポート番号に置き換えます。

   ```
   function FindProxyForURL(url, host) {
       if (shExpMatch(url, "*ec2*.*compute*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
       if (shExpMatch(url, "*ec2*.compute*")) return 'SOCKS5 localhost:8157';
       if (shExpMatch(url, "http://10.*")) return 'SOCKS5 localhost:8157';
       if (shExpMatch(url, "*10*.compute*")) return 'SOCKS5 localhost:8157';
       if (shExpMatch(url, "*10*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
       if (shExpMatch(url, "*.compute.internal*")) return 'SOCKS5 localhost:8157';
       if (shExpMatch(url, "*ec2.internal*")) return 'SOCKS5 localhost:8157';
       return 'DIRECT';
   }
   ```

1. **[Actions]** の下で、**[Apply changes]** を選択して、プロキシ設定を保存します。

1. Chrome ツールバーで [SwitchyOmega] を選択し、`emr-socks-proxy` プロファイル選択します。

## ブラウザでウェブインターフェイスにアクセスする
<a name="connect-to-web-ui-browser"></a>

ウェブインターフェイスを開くには、ブラウザのアドレスバーにプライマリノードまたはコアノードのパブリック DNS 名を入力し、その後に選択したインターフェイスのポート番号を入力します。Spark History Server に接続するために入力する URL を次の例に示します。

```
http://master-public-dns-name:18080/				
```

ノードのパブリック DNS 名を取得する手順については、「[プライマリノードのパブリック DNS 名を取得する](emr-connect-master-node-ssh.md#emr-connect-master-dns)」を参照してください。ウェブインターフェイス URL の詳細なリストについては、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。