

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

# 使用 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)。