选项 2,第 1 部分:使用动态端口转发设置SSH通往主节点的隧道 - Amazon EMR

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

选项 2,第 1 部分:使用动态端口转发设置SSH通往主节点的隧道

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

使用代理管理插件可以URLs根据文本模式自动进行筛选,并将代理设置限制为与主节点的公共DNS名称形式相匹配的域名。当您在查看主节点上托管的网站和互联网上托管的网站之间进行切换时,浏览器附加组件会自动处理打开和关闭代理的操作。

在开始之前,您需要主节点的公共DNS名称和密钥对(key pair)私钥文件。有关如何查找主公用DNS名称的信息,请参阅检索主节点的公共DNS名称。有关访问密钥对的更多信息,请参阅亚马逊EC2用户指南中的亚马逊EC2密钥对。有关您可能希望在主节点上查看的站点的更多信息,请参阅 查看 Amazon EMR 集群上托管的网页界面

通过 Open 使用动态端口转发设置通往主节点的SSH隧道 SSH

通过 Open 使用动态端口转发来设置SSH隧道 SSH
  1. 确保您已允许入站SSH流量。有关说明,请参阅 连接之前:授权入站流量

  2. 打开终端窗口。在 Mac OS X 上,选择 Applications (应用程序) > Utilities (实用程序) > Terminal (终端)。在其它 Linux 发布版上,终端通常位于 Applications (应用程序) > Accessories (附件) > Terminal (终端)

  3. 键入以下命令在本地计算机上打开SSH隧道。Replace(替换) ~/mykeypair.pem 用文件的位置和.pem文件名替换 8157 使用未使用的本地端口号,然后替换 ec2-###-##-##-###.compute-1.amazonaws.com 使用您的集群的主公用DNS名称。

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

    在您发出此命令后,终端保持打开状态并且不返回响应。

    注意

    -D 表示使用动态端口转发,它允许您指定一个本地端口,用于将数据转发到主节点本地 Web 服务器上的所有远程端口。动态端口转发创建本地SOCKS代理,监听命令中指定的端口。

  4. 隧道激活后,为您的浏览器配置SOCKS代理。有关更多信息,请参阅 选项 2,第 2 部分:配置代理设置以查看主节点上托管的网站。

  5. 如果您已完成使用主节点上的 Web 界面,请关闭终端窗口。

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

你可以在 Windows、Linux、Unix 和 Mac OS X 上使用与主节点建立SSH连接。如果你在 Linux、Unix 或 Mac OS X 上使用,则必须按中所示对.pem文件设置权限配置密钥对私有密钥文件权限。 AWS CLI AWS CLI 如果你在 Windows AWS CLI 上使用,Pu TTY 必须出现在路径环境变量中,否则你可能会收到诸如 Ope n SSH 或 Pu TTY 不可用之类的错误。

要使用动态端口转发来设置SSH隧道 AWS CLI
  1. 确保您已允许入站SSH流量。有关说明,请参阅 连接之前:授权入站流量

  2. 创建与主节点的SSH连接,如所示使用 AWS CLI连接到主节点

  3. 要检索集群标识符,请键入:

    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"
  4. 键入以下命令,使用动态端口转发打开通往主节点的SSH隧道。在以下示例中,替换 j-2AL4XXXXXX5T9 使用集群 ID 并替换 ~/mykeypair.key 包含您的.pem文件(对于 Linux、Unix 和 Mac OS X)或.ppk文件(适用于 Windows)的位置和文件名。

    aws emr socks --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
    注意

    socks 命令会自动配置本地端口 8157 上的动态端口转发。目前,此设置无法修改。

  5. 隧道激活后,为您的浏览器配置SOCKS代理。有关更多信息,请参阅 选项 2,第 2 部分:配置代理设置以查看主节点上托管的网站。

  6. 使用完主节点上的 Web 界面后,关闭 AWS CLI 窗口。

    有关在中使用 Amazon EMR 命令的更多信息 AWS CLI,请参阅https://docs.aws.amazon.com/cli/latest/reference/emr

使用 Pu 设置SSH通往主节点的隧道 TTY

Windows 用户可以使用诸如 Pu 之类的SSH客户端TTY来创建SSH通往主节点的隧道。在连接到 Amazon EMR 主节点之前,您应该下载并安装 Pu TTY 和 P uTTYgen。你可以从 Pu 下载页面TTY下载这些工具。

Pu 本身TTY不支持亚马逊EC2生成的密钥对私钥文件格式 (.pem)。您可以使用 P 将密钥文件uTTYgen 转换为所需的 Pu TTY 格式 (.ppk)。在尝试使用 Pu 连接到主节点之前,必须将密钥转换为此格式 (.ppk) TTY。

有关转换密钥的更多信息,请参阅 Amazon EC2 用户指南uTTYgen中的使用 P 转换私钥

使用 Pu 使用动态端口转发设置SSH隧道 TTY
  1. 确保您已允许入站SSH流量。有关说明,请参阅 连接之前:授权入站流量

  2. putty.exe击启动 Pu TTY。你也可以TTY从 Windows 程序列表中启动 Pu。

    注意

    如果您已经与主节点有活动SSH会话,则可以通过右键单击 Pu TTY 标题栏并选择 “更改设置” 来添加隧道。

  3. 如有必要,在 Category (类别) 列表中,选择 Session (会话)

  4. 在 “主机名” 字段中,键入 hadoop@MasterPublicDNS。 例如:hadoop@ec2-###-##-##-###.compute-1.amazonaws.com.

  5. “类别” 列表中,展开 “连接” > SSH,然后选择 “身份验证”。

  6. 对于 Private key file for authentication (用于身份验证的私有密钥文件),选择 Browse (浏览),然后选择您生成的 .ppk 文件。

    注意

    Pu 本身TTY不支持亚马逊EC2生成的密钥对私钥文件格式 (.pem)。您可以使用 P 将密钥文件uTTYgen 转换为所需的 Pu TTY 格式 (.ppk)。在尝试使用 Pu 连接到主节点之前,必须将密钥转换为此格式 (.ppk) TTY。

  7. “类别” 列表中,展开 “连接” > SSH,然后选择 “隧道”。

  8. Source port (源端口) 字段,键入 8157(未使用的本地端口),然后选择 Add (添加)

  9. Destination (目标) 字段留空。

  10. 选择 Dynamic (动态)Auto (自动) 选项。

  11. 选择 Open (打开)

  12. 选择 “是” 可关闭 Pu TTY 安全警报。

    重要

    登录主节点时,如果系统提示您输入用户名,请键入 hadoop

  13. 隧道激活后,为您的浏览器配置SOCKS代理。有关更多信息,请参阅 选项 2,第 2 部分:配置代理设置以查看主节点上托管的网站。

  14. 使用完主节点上的 Web 界面后,关闭 Pu TTY 窗口。