

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 选项 2，第 1 部分：使用动态端口转发设置通往主节点的 SSH 隧道
<a name="emr-ssh-tunnel"></a>

要连接到主节点上的本地 Web 服务器，您需要在计算机和主节点之间创建 SSH 隧道。这也称为*端口转发（port forwarding）*。如果您使用动态端口转发创建 SSH 隧道，则路由到指定未使用本地端口的所有流量都将转发到主节点上的本地 Web 服务器。这将创建 SOCKS 代理。然后，您可以将您的互联网浏览器配置为使用插件，例如 FoxyProxy 或 SwitchyOmega 来管理您的 SOCKS 代理设置。

使用代理管理插件可以 URLs 根据文本模式自动进行筛选，并将代理设置限制为与主节点的公有 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 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 隧道。*\$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` 表示使用动态端口转发，它允许您指定一个本地端口，用于将数据转发到主节点本地 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、Linux、Unix 和 Mac OS X 上使用与主节点创建 SSH 连接。如果你在 Linux、Unix 或 Mac OS X 上使用，则必须按中所示对`.pem`文件设置权限[配置密钥对私有密钥文件权限](emr-connect-master-node-ssh.md#emr-keypair-file-permission-config)。 AWS CLI AWS CLI 如果你在 Windows AWS CLI 上使用，Putty 必须出现在路径环境变量中，否则你可能会收到错误，例如 Open SSH 或 Pu TTY 不可用。<a name="ssh-tunnel-cli"></a>

**要使用动态端口转发设置 SSH 隧道 AWS CLI**

1. 确保您已允许入站 SSH 流量。有关说明，请参阅[连接到 Amazon EMR 之前：授权入站流量](emr-connect-ssh-prereqs.md)。

1. 创建与主节点的 SSH 连接，如 [使用 Connect 连接到主节点 AWS CLI](emr-connect-master-node-ssh.md#emr-connect-cli) 所示。

1. 要检索集群标识符，请键入：

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

   输出列出了您的集群，包括集群 IDs。记下您连接的集群的集群 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*替换为文件（对于 Linux、Unix 和 Mac OS X）或`.ppk`文件（对于 Windows）的位置和文件名。`.pem`

   ```
   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 和 Pu。TTYgen可以从 [PuTTY 下载页面](http://www.chiark.greenend.org.uk/~sgtatham/putty/)下载这些工具。

PuTTY 本身不支持 Amazon EC2 生成的密钥对私有密钥文件格式（`.pem`）。您可以使用 Pu 将密钥文件TTYgen 转换为所需的 PuTTY 格式 () `.ppk`。您必须将密钥转换为此格式 (`.ppk`)，然后才能尝试使用 PuTTY 连接到主节点。

有关转换密钥的更多信息，请参阅 *Amazon EC2 用户指南TTYgen*中的[使用 Pu 转换私钥](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. 在 “**主机名**” 字段中，键入**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`）。您可以使用 Pu 将密钥文件TTYgen 转换为所需的 PuTTY 格式 () `.ppk`。您必须将密钥转换为此格式 (`.ppk`)，然后才能尝试使用 PuTTY 连接到主节点。

1. 在 **Category (类别)** 列表中，展开 **Connection (连接) > SSH**，然后选择 **Tunnels (隧道)**。

1. 在 **Source port (源端口)** 字段，键入 `8157`（未使用的本地端口），然后选择 **Add (添加)**。

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 窗口。