

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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 連線中建立一個通道來檢視主節點上託管的 Web 介面。如需詳細資訊，請參閱[檢視 Amazon EMR 叢集上託管的 Web 介面](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>

可以使用 Amazon EMR 主控台和 AWS CLI來擷取主要公有 DNS 名稱。

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

**若要使用新主控台擷取主節點的公有 DNS 名稱**

1. 登入 AWS 管理主控台，並在 https：//[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 名稱)，請輸入以下其中一個命令。使用之前命令傳回的叢集 ID 取代 *j-2AL4XXXXXX5T9*。

   ```
   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 使用者指南》中的 Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。 *Amazon EC2 *

在預設情況下，您的 Linux 電腦很可能包含 SSH 用戶端。例如，大多數的 Linux、Unix 和 macOS 作業系統都會安裝 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 使用者可以使用 SSH 用戶端 (例如 PuTTY) 連接到主節點。連接到 Amazon EMR 主節點之前，應該下載並安裝 PuTTY 和 PuTTYgen。可以從 [PuTTY 下載頁面](http://www.chiark.greenend.org.uk/~sgtatham/putty/)中下載這些工具。

PuTTY 原生並不支援 Amazon EC2 所產生的金鑰對私有金鑰檔案格式 (`.pem`)。可使用 PuTTYgen 將金鑰檔案轉換為所需的 PuTTY 格式 (`.ppk`)。必須將金鑰轉換為此格式 (`.ppk`)，再嘗試使用 PuTTY 連接至主節點。

如需轉換金鑰的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用 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) (主機名稱 (或 IP 地址))**，輸入 `hadoop@`*MasterPublicDNS*。例如：`hadoop@`*ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com*。

1. 在 **Category (類別)** 清單中選擇 **Connection > SSH (連線 > SSH)**、**Auth**。

1. 針對 **Private key file for authentication (要身分驗證的私密金鑰檔案)**，選擇 **Browse (瀏覽)** 並選取您產生的 `.ppk` 檔案。

1. 選擇**開啟**，然後選擇**是**，關閉 PuTTY 安全提醒。
**重要**  
登入主節點類型時，如果系統提示您輸入使用者名稱，請輸入 `hadoop`。

1. 當您完成處理主節點時，可以透過關閉 PuTTY 來關閉 SSH 連線。
**注意**  
為避免 SSH 連線逾時，可以選擇**類別**清單中的**連線**，並選取選項 **Enable TCP\$1keepalives**。如果您在 PuTTY 中擁有作用中的 SSH 工作階段，可以開啟 PuTTY 標題列的內容 (按一下滑鼠右鍵) 並選擇**變更設定**來變更設定。

如果在使用 SSH 以連接到主節點時遇到困難，請參閱[對執行個體連線進行疑難排解](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)。

## 使用 連線至主節點 AWS CLI
<a name="emr-connect-cli"></a>

您可以使用 Windows AWS CLI 和 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/zh_tw/emr/latest/ManagementGuide/emr-service-ports.html)

# 檢視 Amazon EMR 叢集上託管的 Web 介面
<a name="emr-web-interfaces"></a>

**重要**  
您可以設定自訂安全群組，以允許傳入存取這些 Web 界面。請注意，允許傳入流量的任何連接埠都代表潛在安全漏洞。請詳閱自訂安全群組，以確保您將漏洞數量降至最低。如需詳細資訊，請參閱[使用 Amazon EMR 叢集的安全群組控制網路流量](emr-security-groups.md)。

Hadoop 和您在 EMR 叢集上安裝的其他應用程式會將使用者介面發布為網站，並託管於主節點。基於安全考量，當使用 Amazon EMR 受管安全群組時，這些網站僅在主節點的本機 Web 伺服器上可用。因此，需要連接到主節點以查看 Web 介面。如需詳細資訊，請參閱[使用 SSH 連線至 Amazon EMR 叢集主節點](emr-connect-master-node-ssh.md)。Hadoop 也發行使用者界面做為網站，並在核心節點和任務節點上託管。這些網站也僅適用於本機 Web 伺服器的節點。

下表列出可在叢集執行個體上檢視的 Web 界面。這些 Hadoop 界面可適用於所有叢集。對於主執行個體介面，請將 *master-public-dns-name* 取代為 Amazon EMR 主控台的叢集**摘要**索引標籤中列出的**主要公有 DNS**。對於核心和任務執行個體介面，請將 *coretask-public-dns-name* 取代為執行個體的**公有 DNS 名稱**。若要尋找執行個體的**公有 DNS 名稱**，請在 Amazon EMR 主控台中從清單選擇叢集，選擇**硬體**索引標籤，選擇包含您想要連接之執行個體的執行個體群組 **ID**，接著記下為執行個體列出的**公有 DNS 名稱**。


|  界面的名稱 |   URI  | 
| --- | --- | 
| Flink 歷史記錄服務器 (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 主節點。在核心和任務節點上存取 Web 介面，可以透過與您在主節點上存取 Web 介面的相同方式完成。

有多種可以在主節點上存取 Web 介面的方法。最簡單且最快速的方法是使用 SSH 連接到主節點，並使用文字型瀏覽器 (Lynx) 來檢視 SSH 用戶端中的網站。不過，Lynx 是以文字為基礎的瀏覽器，其使用者介面有無法顯示圖形的限制。以下範例說明如何使用 Lynx 開啟 Hadoop ResourceManager 介面 (也會在您使用 SSH 登入主節點時提供 Lynx URL) 。

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

還有兩個選項可在主節點上存取 Web 介面，它們可提供完整的瀏覽器功能。選擇下列其中一項：
+ 選項 1 (建議更多技術使用者使用)：使用 SSH 用戶端連接到主節點，設定具有本機連接埠轉送的 SSH 通道，並使用網際網路瀏覽器開啟主節點上託管的 Web 介面。這個方法可讓您設定 Web 界面存取，而不需使用 SOCKS 代理。
+ 選項 2 (建議新使用者使用)：使用 SSH 用戶端連接到主節點，設定具有動態連接埠轉送的 SSH 通道，並設定網際網路瀏覽器以使用附加元件 (例如 FoxyProxy for Firefox 或 SwitchyOmega for Chrome) 來管理 SOCKS 代理設定。此方法可讓您根據文字模式自動篩選 URL，並將代理設定限制為與主節點 DNS 名稱之形式相符的域。如需有關如何設定 FoxyProxy for Firefox and Google Chrome 的詳細資訊，請參閱[選項 2，第 2 部分：設定代理設定以檢視 Amazon EMR 叢集主節點上託管的網站](emr-connect-master-node-proxy.md)。

**注意**  
如果透過叢集組態來修改應用程式執行所在的連接埠，則該連接埠的超連結將不會在 Amazon EMR 主控台中更新。這是因為主控台沒有讀取 `server.port` 組態的功能。

自 Amazon EMR 5.25.0 版或更新版本起，您可以從主控台存取 Spark 歷程記錄伺服器 UI，而不需要透過 SSH 連線設定 Web Proxy。如需詳細資訊，請參閱[一鍵式存取持續性 Spark 歷史記錄伺服器](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>

要連接到主節點上的本機 Web 伺服器，請在電腦和主節點之間建立一個 SSH 通道。這就是所謂的*連接埠轉送*。如果不想使用 SOCKS 代理，可以使用本機連接埠轉送來設定主節點的 SSH 通道。使用本機連接埠轉送，可以指定未使用的本機連接埠，這些連接埠用於將流量轉送至主節點本機 Web 伺服器上的特定遠端連接埠。

使用本機連接埠轉送來設定 SSH 通道需要主節點的公有 DNS 名稱和金鑰對私有金鑰檔案。如需尋找主公有 DNS 名稱的詳細資訊，請參閱[擷取主節點的公有 DNS 名稱](emr-connect-master-node-ssh.md#emr-connect-master-dns)。如需存取金鑰對的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。 *Amazon EC2 * 如需您想要在主節點上檢視之網站的詳細資訊，請參閱 [檢視 Amazon EMR 叢集上託管的 Web 介面](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 (隨機選擇的未使用的本機連接埠) 上的流量轉送至在主節點本機 Web 伺服器上的連接埠 8088 來存取 ResourceManager Web 介面。 

   在命令中，將 *\$1/mykeypair.pem* 取代為 `.pem` 檔案的位置和檔案名，並將 *ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com* 取代為叢集的主要公有 DNS 名稱。若要存取不同的 Web 介面，請將 `8088` 取代為合適的連接埠號碼。例如，對於 Zeppelin，將 `8088` 取代為 `8890`。

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

   `-L` 表示使用本機連接埠轉送，可讓您指定本機連接埠，用於將資料轉送至主節點本機 Web 伺服器上的已識別遠端連接埠。

   發出此命令後，終端會保持開啟，且不會傳回回應。 

1. 若要在瀏覽器中開啟 ResourceManager Web 介面，請在地址列中輸入 `http://localhost:8157/`。

1. 當您在主節點完成 Web 介面的處理時，請關閉終端視窗。

# 選項 2，第 1 部分：使用動態連接埠轉送來設定主節點的 SSH 通道
<a name="emr-ssh-tunnel"></a>

要連接到主節點上的本機 Web 伺服器，請在電腦和主節點之間建立一個 SSH 通道。這就是所謂的*連接埠轉送*。如果您使用動態連接埠轉送來建立您的 SSH 通道，所有路由到指定未使用的本機連接埠流量會轉送到主節點上的本機 Web 伺服器。這會建立一個 SOCKS 代理。然後，可以設定網際網路瀏覽器，以使用附加元件 (例如 FoxyProxy 或 SwitchyOmega) 來管理 SOCKS 代理設定。

使用代理管理附加元件可讓您根據文字模式自動篩選 URL，並將代理設定限制為與主節點 DNS 名稱之形式相符的域。當您在主節點上託管的檢視網站和網際網路上的檢視網站之間切換時，瀏覽器附加元件會自動處理代理的開啟和關閉。

開始之前，您需要主節點的公有 DNS 名稱和金鑰對私有金鑰檔案。如需有關如何找到主要公有 DNS 名稱的詳細資訊，請參閱 [擷取主節點的公有 DNS 名稱](emr-connect-master-node-ssh.md#emr-connect-master-dns)。如需存取金鑰對的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。 *Amazon EC2 * 如需您想要在主節點上檢視之網站的詳細資訊，請參閱 [檢視 Amazon EMR 叢集上託管的 Web 介面](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 通道。以`.pem`檔案的位置和檔案名稱取代 *\$1/mykeypair.pem*，以未使用的本機連接埠號碼取代 *8157*，並以叢集的主要公有 DNS 名稱取代 *ec2-\$1\$1\$1-\$1\$1-\$1\$1-\$1\$1\$1.compute-1.amazonaws.com。*

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

   發出此命令後，終端會保持開啟，且不會傳回回應。
**注意**  
`-D` 表示使用動態連接埠轉送，可讓您指定本機連接埠，用於將資料轉送至主節點本機 Web 伺服器上的所有遠端連接埠。動態連接埠轉送會在命令中指定的連接埠上建立本機 SOCKS 代理接聽。

1. 通道在作用中後，為您的瀏覽器設定 SOCKS 代理。如需詳細資訊，請參閱[選項 2，第 2 部分：設定代理設定以檢視 Amazon EMR 叢集主節點上託管的網站](emr-connect-master-node-proxy.md)。

1. 當您在主節點完成 Web 介面的處理時，請關閉終端視窗。

## 透過 使用動態連接埠轉送來設定 SSH 通道 AWS CLI
<a name="emr-ssh-tunnel-cli"></a>

您可以使用 Windows AWS CLI 和 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. 建立主節點的 SSH 連線與，如 [使用 連線至主節點 AWS CLI](emr-connect-master-node-ssh.md#emr-connect-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": "AWS CLI cluster"
   ```

1. 輸入以下命令，以使用動態連接埠轉送來開啟主節點的 SSH 通道。在下列範例中，使用叢集 ID 來取代 *j-2AL4XXXXXX5T9* 並使用您 * 檔案 (若是 Linux、Unix 和 Mac OS X) 或 * 檔案 (若是 Windows) 的位置和檔名來取代 `.pem`\$1/mykeypair.key`.ppk`。

   ```
   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. 當您完成使用主節點上的 Web 介面時，請關閉 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 使用者可以使用 SSH 用戶端 (例如 PuTTY) 來建立主節點的 SSH 通道。連接到 Amazon EMR 主節點之前，應該下載並安裝 PuTTY 和 PuTTYgen。可以從 [PuTTY 下載頁面](http://www.chiark.greenend.org.uk/~sgtatham/putty/)中下載這些工具。

PuTTY 原生並不支援 Amazon EC2 所產生的金鑰對私有金鑰檔案格式 (`.pem`)。可使用 PuTTYgen 將金鑰檔案轉換為所需的 PuTTY 格式 (`.ppk`)。必須將金鑰轉換為此格式 (`.ppk`)，再嘗試使用 PuTTY 連接至主節點。

如需轉換金鑰的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用 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 標題列按一下滑鼠右鍵並選擇**變更設定**來新增通道。

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 (連線 > SSH)**，然後選擇 **Auth**。

1. 針對 **Private key file for authentication (要身分驗證的私密金鑰檔案)**，選擇 **Browse (瀏覽)** 並選取您產生的 `.ppk` 檔案。
**注意**  
PuTTY 原生並不支援 Amazon EC2 所產生的金鑰對私有金鑰檔案格式 (`.pem`)。可使用 PuTTYgen 將金鑰檔案轉換為所需的 PuTTY 格式 (`.ppk`)。必須將金鑰轉換為此格式 (`.ppk`)，再嘗試使用 PuTTY 連接至主節點。

1. 在 **Category (類別)** 清單中，展開 **Connection > SSH (連線 > SSH)**，然後選擇 **Tunnels (通道)**。

1. 在**來源連接埠**欄位中，輸入 `8157` (未使用的本機連接埠)，然後選擇**新增**。

1. 將 **Destination (目的地)** 欄位保留空白。

1. 選取 **Dynamic (動態)** 與 **Auto (自動)** 選項。

1. 選擇 **Open** (開啟)。

1. 選擇 **Yes (是)** 關閉 PuTTY 安全提醒。
**重要**  
登入主節點時，如果系統提示您輸入使用者名稱，請輸入 `hadoop`。

1. 通道在作用中後，為您的瀏覽器設定 SOCKS 代理。如需詳細資訊，請參閱[選項 2，第 2 部分：設定代理設定以檢視 Amazon EMR 叢集主節點上託管的網站](emr-connect-master-node-proxy.md)。

1. 當您在主節點完成 Web 介面的處理時，請關閉 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)。如需這些可用 Web 介面的詳細資訊，請參閱 [檢視 Amazon EMR 叢集上託管的 Web 介面](emr-web-interfaces.md)。



設定代理附加元件時，請包含下列設定：
+ 使用 **localhost** 作為主機地址。
+ 使用您選取的相同本機連接埠號碼，在 [選項 2，第 1 部分：使用動態連接埠轉送來設定主節點的 SSH 通道](emr-ssh-tunnel.md) 中建立具有主節點的 SSH 通道。例如，連接埠 *8157*。此連接埠也必須與 PuTTY 中使用的連接埠編號或用於連接的其他終端模擬器相符。
+ 指定 **SOCKS v5** 通訊協定。SOCKS v5 可讓您選擇性地設定使用者授權。
+ **URL Patterns (URL 模式)**

  以下 URL 模式應加入允許清單並使用萬用字元模式類型加以指定：
  + **\$1ec2\$1.\$1compute\$1.amazonaws.com\$1** 和 **\$110\$1.amazonaws.com\$1** 模式與美國區域中叢集的公有 DNS 名稱相符。
  + **\$1ec2\$1.compute\$1** 和 **\$110\$1.compute\$1** 模式則與所有其他區域中叢集的公有 DNS 名稱相符。
  +  **10.\$1** 模式提供對 Hadoop 中 JobTracker 日誌檔案的存取。如果此篩選條件與網路存取計畫衝突，請進行更改。
  + **\$1.ec2.internal\$1** 和 **\$1.compute.internal\$1** 模式分別符合 `us-east-1` 區域和所有其他區域中叢集的私有 (內部) DNS 名稱。

## 範例：設定 FoxyProxy for Firefox
<a name="emr-connect-foxy-proxy-chrome"></a>

下面的範例演示了 Mozilla Firefox 的 FoxyProxy Standard (7.5.1 版) 組態。

FoxyProxy 提供一組代理管理工具。它允許您為 URL 使用代理伺服器，這些 URL 與 Amazon EMR 叢集中的 Amazon EC2 執行個體使用的域所對應的模式相符。<a name="foxy-proxy"></a>

**使用 Mozilla Firefox 來安裝和設定 FoxyProxy**

1. 在 Firefox 中，轉到 [https://addons.mozilla.org/](https://addons.mozilla.org/)，搜尋 FoxyProxy Standard，然後按照說明將 FoxyProxy 新增到 Firefox。

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. 從下拉式清單中選取**選項**。

1. 從左側功能表中選擇**匯入設定**。

1. 在**匯入設定**頁面中，選擇**從 FoxyProxy 6.0\$1 中匯入設定**下的**匯入設定**，瀏覽至您建立的 `foxyproxy-settings.json` 檔案的位置，選取該檔案，並選擇**開啟**。

1. 當系統提示您覆寫現有設定並儲存新組態時，請選擇**確定**。

## 範例：針對 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. 選擇**新設定檔**，並輸入 `emr-socks-proxy` 作為設定檔名稱。

1. 選擇 **PAC 設定檔**，然後選擇**建立**。[Proxy Auto-Configuration (PAC)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file) 檔案可協助您為應轉送至 Web 代理伺服器的瀏覽器請求定義允許清單。

1. 在 **PAC 指令碼**欄位中，將內容取代為下面的指令碼，該指令碼可定義應透過 Web 代理伺服器轉送的 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. 在**動作**下，選擇**套用變更**以儲存代理設定。

1. 在 Chrome 工具列中，選擇 SwitchyOmega 並選取 `emr-socks-proxy` 設定檔。

## 在瀏覽器中存取 Web 介面
<a name="connect-to-web-ui-browser"></a>

要開啟 Web 介面，請在瀏覽器地址列中輸入主節點或核心節點的公有 DNS 名稱，後跟所選介面的連接埠號碼。以下範例顯示您將輸入的 URL 以連接到 Spark HistoryServer。

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

如需有關擷取節點公有 DNS 名稱的指示，請參閱 [擷取主節點的公有 DNS 名稱](emr-connect-master-node-ssh.md#emr-connect-master-dns)。如需 Web 介面 URL 的完整清單，請參閱 [檢視 Amazon EMR 叢集上託管的 Web 介面](emr-web-interfaces.md)。