SSH隧道访问开源组件Web界面

除了通过EMR控制台提供的链接地址访问开源组件Web界面外,还可通过SSH隧道方式进行安全访问。通过SSH隧道和SOCKS代理,您可在不暴露集群内部网络结构的情况下访问开源组件Web界面。

说明

开源组件Web界面访问方式选择,请参见查看开源组件 Web 界面

前提条件

SSH本地端口转发访问

重要

此方式只能查看最外层的页面,无法查看详细的作业信息。

您可以通过SSH本地端口转发,将集群主节点的端口映射到本地端口,从而直接访问集群主节点上运行的Web应用界面。

1、创建SSH隧道

打开本地命令行窗口,通过SSH方式连接到集群主节点。您可根据您创建集群时的配置选择密码方式或密钥方式访问。

密钥方式访问

ssh -i <密钥文件路径> -N -L <本地端口>:<主节点的节点名称>:<组件端口> root@<主节点公网IP地址>

相关参数描述如下:

  • -i :指定用于身份验证的私钥文件路径。

  • -N:仅用于设置端口转发,建立隧道而不需要执行命令。

  • -L:使用本地端口转发,用于将数据转发到主节点本地Web服务器上标识的远程端口。

  • <密钥文件路径>:密钥文件保存的路径,详情请参见管理密钥对

  • <本地端口>:您可使用本地服务器未被使用的任意一个端口(例如,8156)。

  • <主节点的节点名称>:集群详情页节点管理下主节点的节点名称,详情请参见获取节点名称(例如,master-1-1)。

  • <组件端口>:组件端口信息请参见开源组件常用端口(例如,Yarn UI端口8088)。

  • <主节点公网IP地址>:集群详情页节点管理下主节点的公网IP地址,详情请参见获取节点公网IP

密码方式访问

ssh -N -L <本地端口>:<主节点的节点名称>:<组件端口> root@<主节点公网IP地址>

相关参数描述如下:

  • -N:仅用于设置端口转发,建立隧道而不需要执行命令。

  • -L:使用本地端口转发,用于将数据转发到主节点本地Web服务器上标识的远程端口。

  • <本地端口>:您可使用本地服务器未被使用的任意一个端口(例如,8156)。

  • <主节点的节点名称>:集群详情页节点管理下主节点的节点名称,详情请参见获取节点名称(例如,master-1-1)。

  • <组件端口>:组件端口信息请参见开源组件常用端口(例如,Yarn UI端口8088)。

  • <主节点公网IP地址>:集群详情页节点管理下主节点的公网IP地址,详情请参见获取节点公网IP

重要

完成隧道创建之后,请保持终端打开状态,此时并不会返回响应。

2、访问开源组件地址

在浏览器地址栏输入http://localhost:<本地端口>,即可访问相应的Web UI。其中,<本地端口>为步骤1中配置的本地端口。例如,本示例打开http://localhost:8156即可访问YARN UI。

说明

如果同时访问多个开源组件的Web界面,需要重复此方式开启另外一个本地端口进行转发。

SSH动态端口转发访问

通过创建SSH隧道,将本地主机的请求通过一个SOCKS代理服务器转发到集群主节点。这样,本地服务器上的请求即可访问集群主节点上开源组件的Web界面数据。

1、创建SSH隧道

打开本地命令行窗口,通过SSH方式连接到集群主节点。您可根据您创建集群时的配置选择密码方式或密钥方式访问。

密钥方式访问

ssh -i <密钥文件路径> -N -D <端口> root@<主节点公网IP地址>

相关参数描述如下:

  • -i :指定用于身份验证的私钥文件路径。

  • -N:仅用于设置端口转发,建立隧道而不需要执行命令。

  • -D:使用动态端口转发,启动SOCKS代理进程并侦听用户本地端口。

  • <密钥文件路径>:密钥文件保存的路径,详情请参见管理密钥对

  • <端口>:您可使用本地服务器未被使用的任意一个端口(例如,8157)。

  • <主节点公网IP地址>:集群详情页节点管理下主节点的公网IP地址,详情请参见获取节点公网IP

密码方式访问

ssh -N -D <端口> root@<主节点公网IP地址>

相关参数描述如下:

  • -N:仅用于设置端口转发,建立隧道而不需要执行命令。

  • -D:使用动态端口转发,启动SOCKS代理进程并侦听用户本地端口。

  • <端口>:您可使用本地服务器未被使用的任意一个端口(例如,8157)。

  • <主节点公网IP地址>:集群详情页节点管理下主节点的公网IP地址,详情请参见获取节点公网IP

重要

完成隧道创建之后,请保持终端打开状态,此时并不会返回响应。

2、配置浏览器代理

完成动态转发配置以后,您可从以下两种方式中选择一种来进行浏览器代理配置。

Chrome浏览器命令行方式

  1. 打开本地命令行窗口,进入本地Google Chrome浏览器客户端的安装目录。

    操作系统

    Chrome默认安装目录

    macOS X

    /Applications/Google\ Chrome.app/Contents/macOS

    Linux

    /usr/bin/google-chrome

    Windows

    64位和32位系统默认路径分别如下:

    • C:\Program Files\Google\Chrome\Application\

    • C:\Program Files (x86)\Google\Chrome\Application\

    说明

    操作系统不同,Chrome浏览器的默认安装目录不同。

  2. Google Chrome配置为通过本地SOCKS代理,并启动Google Chrome浏览器。启动端口为在步骤1创建SSH隧道中开启的端口号。

    说明

    本示例演示8157端口的命令。

    macOS X
    ./Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
    Linux
    chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
    Windows
    chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=c:\\tmppath\\

Chrome插件代理方式

插件方式可帮助您更方便地在浏览器中管理和使用代理,确保网页浏览和集群Web界面访问互不干扰。

  1. 安装ChromeSwitchyOmega插件。

  2. 进入插件配置页面,单击新建情景模式,输入情景模式名称(例如SSH tunnel),情景模式类型选择PAC情景模式

  3. PAC脚本中配置以下内容。

    说明

    本示例演示8157端口的代码。

    function regExpMatch(url, pattern) {
      try {
        return new RegExp(pattern).test(url);
      } catch (ex) {
        return false;
      }
    }
    
    function FindProxyForURL(url, host) {
      if (shExpMatch(url, "*localhost*")) return "SOCKS5 localhost:8157";
      if (shExpMatch(url, "*emr-header*")) return "SOCKS5 localhost:8157";
      if (shExpMatch(url, "*emr-worker*")) return "SOCKS5 localhost:8157";
      if (shExpMatch(url, "*master*")) return "SOCKS5 localhost:8157";
      if (shExpMatch(url, "*core*")) return "SOCKS5 localhost:8157";
      return 'DIRECT';
    }
  4. 完成上述参数配置后,在左侧导航栏中单击应用选项

  5. 在浏览器右上角,将代理模式切换至刚创建的SSH tunnel情景模式。

    image

3、访问开源组件地址

在浏览器地址栏输入http://<主节点的节点名称>:<端口>,即可访问相应服务的Web界面。 例如,访问YARN UI地址为http://master-1-1:8088

参数描述如下:

  • <主节点的节点名称>:集群详情页节点管理下主节点的节点名称,详情请参见获取节点名称(例如,master-1-1)。

  • <端口>:步骤1中配置的本地端口。

说明

如果同时访问多个开源组件的Web界面,直接修改端口即可。

相关文档