Security
2018-09-03 17:21:30 tianshuai1212 阅读数 57
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34982 人正在学习 去看看 张长志

Spark Security

Spark目前通过共享密钥支持身份验证。 可以通过spark.authenticate配置参数将身份验证配置为打开。 此参数控制Spark通信协议是否使用共享密钥进行身份验证。 此身份验证是一种基本握手,可确保双方具有相同的共享密钥并允许进行通信。 如果共享密钥不相同,则不允许它们进行通信。 共享密钥创建如下:

  • 对于YARN部署上的Spark,将spark.authenticate配置为true将自动处理生成和分发共享密钥。 每个应用程序将使用唯一的共享密钥。
  • 对于其他类型的Spark部署,应在每个节点上配置Spark参数spark.authenticate.secret。 所有主人/工人和应用程序都将使用此秘密。

Web UI

可以通过spark.ui.filters设置使用javax servlet过滤器以及通过SSL设置使用https / SSL来保护Spark UI。

Authentication(认证)

如果用户具有不允许其他用户看到的数据,则用户可能希望保护用户界面。用户指定的javax servlet过滤器可以对用户进行身份验证,然后一旦用户登录,Spark就可以将该用户与视图ACL进行比较,以确保他们有权查看UI。配置spark.acls.enable,spark.ui.view.acls和spark.ui.view.acls.groups控制ACL的行为。请注意,启动应用程序的用户始终具有UI的视图访问权限。在YARN上,Spark UI使用标准的YARN Web应用程序代理机制,并将通过任何已安装的Hadoop过滤器进行身份验证。

Spark还支持修改ACL以控制谁有权修改正在运行的Spark应用程序。这包括杀死应用程序或任务等内容。这由configs spark.acls.enable,spark.modify.acls和spark.modify.acls.groups控制。请注意,如果您要对Web UI进行身份验证,那么为了在Web UI上使用kill按钮,可能还需要将修改请求中的用户添加到视图中。在YARN上,传入修改acls并控制谁通过YARN接口修改访问权限。 Spark允许在总是具有查看和修改所有应用程序权限的acls中指定一组管理员。由configs spark.admin.acls和spark.admin.acls.groups控制。这在您可能拥有帮助用户调试应用程序的管理员或支持人员的共享群集上非常有用。

Event Logging

如果您的应用程序正在使用事件日志记录,则应手动创建事件日志所在的目录(spark.eventLog.dir)并在其上设置适当的权限。 如果您希望这些日志文件受到保护,则应将该目录的权限设置为drwxrwxrwxt。 目录的所有者应该是运行历史记录服务器的超级用户,并且组权限应限制为超级用户组。 这将允许所有用户写入目录,但会阻止非特权用户删除或重命名文件,除非他们拥有该文件或目录。 Spark将创建事件日志文件,其权限使得只有用户和组具有读写访问权限。

Encryption(加密)

Spark支持HTTP协议的SSL。 块传输服务和RPC端点支持SASL加密。 如果需要,也可以加密随机文件。

SSL Configuration
SSL的配置按层次结构组织。 用户可以配置默认SSL设置,这些设置将用于所有支持的通信协议,除非它们被特定于协议的设置覆盖。 这样,用户可以轻松地为所有协议提供通用设置,而无需单独配置每个协议。 常见的SSL设置位于Spark配置中的spark.ssl命名空间。 下表描述了用于覆盖默认设置的特定于组件的配置命名空间:

Config Namespace Component
spark.ssl.fs 文件下载客户端(用于从启用HTTPS的服务器下载jar和文件)。
spark.ssl.ui Spark application Web UI
spark.ssl.standalone Standalone Master / Worker Web UI
spark.ssl.historyServer History Server Web UI

YARN mode
密钥库可以在客户端准备,然后由执行程序分发和使用,作为应用程序的一部分。这是可能的,因为用户可以使用spark.yarn.dist.files或spark.yarn.dist.archives配置设置在YARN中启动应用程序之前部署文件。转移这些文件的加密责任在YARN方面,与Spark无关。

对于像Spark Streaming应用程序这样长时间运行的应用程序能够写入HDFS,可以通过–principal和–keytab参数分别将主体和keytab传递给spark-submit。传入的密钥表将通过Hadoop分布式缓存复制到运行Application Master的计算机上(安全地 - 如果YARN配置了SSL并启用了HDFS加密)。将使用此主体和密钥表定期更新Kerberos登录,并且将定期生成HDFS所需的委派令牌,以便应用程序可以继续写入HDFS。

Standalone mode

用户需要为master和worker提供密钥库和配置选项。 必须通过在SPARK_MASTER_OPTS和SPARK_WORKER_OPTS环境变量中附加适当的Java系统属性来设置它们,或者仅在SPARK_DAEMON_JAVA_OPTS中附加它们。 在此模式下,用户可以允许执行程序使用从生成该执行程序的worker继承的SSL设置。 可以通过将spark.ssl.useNodeLocalConf设置为true来完成。 如果设置了该参数,则执行者不会使用用户在客户端提供的设置。

Mesos mode

Mesos 1.3.0和更新版本支持Secrets原语作为基于文件和基于环境的秘密。 Spark允许分别使用spark.mesos.driver.secret.filenames和spark.mesos.driver.secret.envkeys指定基于文件和基于环境变量的机密。 根据秘密存储后端,秘密可以通过引用或值分别通过spark.mesos.driver.secret.names和spark.mesos.driver.secret.values配置属性传递。 参考类型机密由秘密商店提供并通过名称引用,例如/ mysecret。 值类型机密在命令行上传递并转换为适当的文件或环境变量。

Preparing the key-stores

密钥库可以通过keytool程序生成。 此工具的参考文档在此处。 为独立部署模式配置密钥库和信任库的最基本步骤如下:

  1. 为每个节点生成密钥对
  2. 将密钥对的公钥导出到每个节点上的文件
  3. 将所有导出的公钥导入单个信任库
  4. 在节点上分发信任库

Configuring SASL Encryption(配置SASL加密)

启用身份验证(spark.authenticate)时,块传输服务当前支持SASL加密。 要为应用程序启用SASL加密,请在应用程序的配置中将spark.authenticate.enableSaslEncryption设置为true。

使用外部shuffle服务时,可以通过在shuffle服务的配置中将spark.network.sasl.serverAlwaysEncrypt设置为true来禁用未加密的连接。 如果启用该选项,则未设置为使用SASL加密的应用程序将无法连接到shuffle服务。

Configuring Ports for Network Security

Spark大量使用网络,某些环境对使用严密的防火墙设置有严格的要求。 以下是Spark用于通信的主要端口以及如何配置这些端口。

Standalone mode only

from to Default port Purpose configuration Setting Notes
Browser Standalone Master 8080 Web UI spark.master.ui.port /SPARK_MASTER_WEBUI_PORT Jetty-based. Standalone mode only.
Browser Standalone worker 8081 Web UI spark.worker.ui.port /SPARK_WORKER_WEBUI_PORT Jetty-based. Standalone mode only.
Driver /Standalone Worker Standalone Master 7077 Submit job to cluster /Join cluster SPARK_MASTER_PORT Set to “0” to choose a port randomly. Standalone mode only.
Standalone Master Standalone Worker (random) Schedule executors SPARK_WORKER_PORT Set to “0” to choose a port randomly. Standalone mode only.

All cluster managers

from to Default port Purpose configuration Setting Notes
Browser Application 4040 Web UI spark.ui.port Jetty-based
Browser History Server 18080 Web UI spark.history.ui.port Jetty-based
Executor /Standalone Master Driver (random) Connect to application /Notify executor state changes spark.driver.port Set to “0” to choose a port randomly.
Executor / Driver Executor / Driver (random) Block Manager port spark.blockManager.port Raw socket via ServerSocketChannel

HTTP Security Headers

Apache Spark可以配置为包含HTTP标头,它有助于防止跨站点脚本(XSS),跨框架脚本(XFS),MIME嗅探以及强制HTTP严格传输安全性。

Property Name Default Meaning
spark.ui.xXssProtection 1; mode=block Value for HTTP X-XSS-Protection response header. You can choose appropriate value from below:0 (Disables XSS filtering)1 (Enables XSS filtering. If a cross-site scripting attack is detected, the browser will sanitize the page.)1; mode=block (Enables XSS filtering. The browser will prevent rendering of the page if an attack is detected.)
spark.ui.xContentTypeOptions.enabled true When value is set to “true”, X-Content-Type-Options HTTP response header will be set to “nosniff”. Set “false” to disable.
spark.ui.strictTransportSecurity none Value for HTTP Strict Transport Security (HSTS) Response Header. You can choose appropriate value from below and set expire-time accordingly, when Spark is SSL/TLS enabled. max-age=expire-time max-age=expire-time; includeSubDomains max-age=expire-time; preload

有关安全性配置参数的详细信息,请参阅配置页面;有关安全性的实现详细信息,请参阅org.apache.spark.SecurityManager。

2020-01-06 14:51:27 zpf_940810653842 阅读数 5
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34982 人正在学习 去看看 张长志

Spark目前支持通过共享密钥进行身份验证。可以通过spark将身份验证配置为on。验证配置参数。此参数控制Spark通信协议是否使用共享密钥进行身份验证。此身份验证是一个基本的握手,以确保双方拥有相同的共享机密并允许通信。如果共享的秘密不相同,则不允许它们通信。共享秘密创建如下:

  • 对于 spark on yarn 的部署。spark.authenticate 为 true 将自动处理共享密钥的生成和分发。每个应用程序将使用唯一的共享机密。
  • 对于其他类型的部署,spark.authenticate.secret 应该在每个节点上配置,这个密钥将被所有的 master/wordker 和程序使用

Web UI

spark ui 可以通过 spark.ui.filters 配置设置 javax servlet filters 来加密和通过使用 spark.ui.https.enabled 设置https/SSL。

认证

如果UI拥有其他用户不应该看到的数据,那么用户可能希望保护UI。用户指定的 javax servlet filters 可以对用户进行身份验证,然后用户登录后,Spark 可以将该用户与视图acl进行比较,以确保它们被授权查看UI。spark.acls.enable, spark.ui.view.acls 和 spark.ui.view.acls.groups 用来控制 acl 的行为。注意,启动应用程序的用户始终具有对UI的视图访问权。在 yarn 上,Spark UI 使用标准的 yarn web 应用程序代理机制,并将通过安装的任何Hadoop过滤器进行身份验证。

Spark 还支持修改 acl,以控制谁有权修改正在运行的 Spark 应用程序。包括终止程序或人物。由 spark.acls.enable, spark.modify.acls and spark.modify.acls.groups 来控制。注意,如果您正在对 web UI 进行身份验证,为了在 web UI 上使用 kill 按钮,可能需要将 modify acl 中的用户添加到视图acl中。yarn 模式下,通过 yarn 的接口控制谁有权限修改 acl。spark.admin.acls and spark.admin.acls.groups 控制。通常用于共享集群帮助用户调试程序。

事件记录

如果您的应用程序正在使用事件日志记录,那么应该手动创建事件日志所在的目录(spark.eventLog.dir),并设置适当的权限。如果希望保护这些日志文件,应该将该目录的权限设置为 drwxrwxrwxt。目录的所有者应该是运行历史服务器的超级用户,组权限应该限制为超级用户组。这将允许所有用户写入目录,但将防止无特权用户删除或重命名一个文件,除非他们拥有该文件或目录。事件日志文件将由Spark创建,并具有只有用户和组具有读写权限的权限。

加密

Spark 支持 HTTP 协议的 SSL。block 传输服务和 RPC 端点支持 SASL 加密。

对于 Spark 在临时本地存储中存储的数据(如洗牌文件、缓存的数据和其他应用程序文件),还不支持加密。如果需要对该数据进行加密,则可以将集群管理器配置为将应用程序数据存储在加密的磁盘上。

SSL Configuration

SSL 的配置是分层组织的。用户可以配置默认的SSL设置,这些设置将用于所有受支持的通信协议,除非它们被特定于协议的设置覆盖。通过这种方式,用户可以轻松地为所有协议提供公共设置,而不必禁用单独配置每个协议的能力。常见的 SSL 设置如 spark.ssl 命名空间。下表描述了用于覆盖默认设置的特定于组件的配置名称空间:

Config Namespace Component
spark.ssl.fs HTTP file server and broadcast server
spark.ssl.ui Spark application Web UI
spark.ssl.standalone Standalone Master / Worker Web UI
spark.ssl.historyServer History Server Web UI

可用 SSL 选项的完整分类可以在配置页面中找到。必须在每个节点上配置 SSL,并为使用特定协议进行通信的每个组件配置SSL。Spark Configuration Guide

YARN mode

密钥存储可以在客户端准备,然后分发给执行器并作为应用程序的一部分使用。在 yarn 中可以使用 spark.yarn.dist.files or spark.yarn.dist.archives 在程序启动之前部署文件。传输这些文件的加密责任在 yarn,与Spark无关。

对于像 Spark Streaming apps 这样的长时间运行的应用程序,要能够写入 HDFS,可以分别通 --principa l --keytab 参数将一个principal 和 keytab 传递给 Spark -submit。传入的 keytab 将通过 Hadoop 分布式缓存复制到运行应用程序主服务器的机器上(安全地—如果 YARN 配置了 SSL 并且启用了 HDFS 加密)。Kerberos 登录将定期使用这个主体和 keytab 进行更新,并定期生成HDFS 所需的委托令牌,以便应用程序可以继续向 HDFS 写入数据。

Standalone mode

用户需要为主和工作者提供密钥存储库和配置选项。它们必须通过在 SPARK_MASTER_OPTS 和 SPARK_WORKER_OPTS 环境变量中附加适当的 Java 系统属性来设置,或者只用 PARK_DAEMON_JAVA_OPTS。在此模式下,用户可以允许执行者使用从派生该执行者的工作程序继承的SSL设置。可以通过将 spark.ssl.useNodeLocalConf 为 true 来实现。如果设置了该参数,则执行器不会使用用户在客户端提供的设置。

Preparing the key-stores

密钥存储可以通过keytool程序生成。最基本的步骤配置独立的密钥存储库和信任存储库部署模式如下:1、为每个节点生成一个密钥对2、将密钥对的公钥导出到每个节点上的一个文件3、将所有导出的公钥导入到一个信任存储库4、在节点上分发信任存储库。

配置SASL加密

当启用身份验证(spark.authenticate)时,当前对块传输服务支持SASL加密。通过设置 spark.authenticate.enableSaslEncryption to true,来启用程序的sasl加密。

当使用外部洗牌服务时,可以通过在洗牌服务的配置中将 spark.net .sasl. serveralwaysencrypt 设置为 true 来禁用未加密的连接。如果启用该选项,未设置为使用 SASL 加密的应用程序将无法连接到 shuffle 服务。

为网络安全配置端口

Spark 大量使用网络,一些环境对使用严格的防火墙设置有严格的要求。下面是 Spark 用于通信的主要端口以及如何配置这些端口。

Standalone mode only

From To Default Port Purpose Configuration Setting Notes
Browser Standalone Master 8080 Web UI spark.master.ui.port /
SPARK_MASTER_WEBUI_PORT
Jetty-based. Standalone mode only.
Browser Standalone Worker 8081 Web UI spark.worker.ui.port /
SPARK_WORKER_WEBUI_PORT
Jetty-based. Standalone mode only.
Driver /
Standalone Worker
Standalone Master 7077 Submit job to cluster /
Join cluster
SPARK_MASTER_PORT Set to "0" to choose a port randomly. Standalone mode only.
Standalone Master Standalone Worker (random) Schedule executors SPARK_WORKER_PORT Set to "0" to choose a port randomly. Standalone mode only.

All cluster managers

From To Default Port Purpose Configuration Setting Notes
Browser Application 4040 Web UI spark.ui.port Jetty-based
Browser History Server 18080 Web UI spark.history.ui.port Jetty-based
Executor /
Standalone Master
Driver (random) Connect to application /
Notify executor state changes
spark.driver.port Set to "0" to choose a port randomly.
Executor / Driver Executor / Driver (random) Block Manager port spark.blockManager.port Raw socket via ServerSocketChannel

 

详细配置:

Spark Configuration Guide

 

原文:http://spark.apache.org/docs/2.1.1/security.html#configuring-ports-for-network-security

2013-06-21 10:14:01 zhongjingquan 阅读数 27
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34982 人正在学习 去看看 张长志

       本文档提供了指示为集成Openfire身份验证、用户和组与您的自定义数据库表。这是有用,当您的用户已经有账户在一个外部系统,你不希望重复这些账户在Openfire。简单的集成与定制数据库允许用户身份验证使用他们现有的用户名和密码。您可以加载用户配置文件配置Openfire和组信息从您的自定义数据库。具体的步骤如下:

1:数据源配置

 你需要指定数据源连接驱动和连接url.需要写在openfire/src/conf/openfire.xml

<jive>
  ...
  <jdbcProvider>
    <driver>com.mysql.jdbc.Driver</driver>
    <connectionString>jdbc:mysql://localhost/dbname?user=username&amp;password=secret</connectionString>
  </jdbcProvider>
  ...
</jive>
2:认证集成

 你需要指定认证类,openfire提供了org.jivesoftware.openfire.auth.JDBCAuthProvider类

<jive>
  ...
  <provider>
    <auth>
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    </auth>
  </provider>
  <jdbcAuthProvider>
     <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</passwordType>
   </jdbcAuthProvider>
   ...
  </jive>
其中jdbcAuthProvider.passwordType 支持以下类型:
  1. plain
  2. md5
  3. sha1
  4. sha256
  5. sha512
3:用户信息整合

 你需要指定用户信息加载类,openfire提供了org.jivesoftware.openfire.user.JDBCUserProvider类。完整的配置:

<jive>
  ...
  <provider>
    <auth>
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    </auth>
    <user>
      <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
    </user>
  </provider>
  <jdbcAuthProvider>
     <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</passwordType>
  </jdbcAuthProvider>
  <jdbcUserProvider>
     <loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL>
     <userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL>
     <allUsersSQL>SELECT username FROM myUser</allUsersSQL>
     <searchSQL>SELECT username FROM myUser WHERE</searchSQL>
     <usernameField>username</usernameField>
     <nameField>name</nameField>
     <emailField>email</emailField>
  </jdbcUserProvider>
   ...
 </jive>

 

4:用户组信息整合

 你需要指定用户信息加载类,openfire提供了 org.jivesoftware.openfire.group.JDBCGroupProvider类。完整的配置:

 

<jive>
  ...
  <provider>
    <auth>
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    </auth>
    <user>
      <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
    </user>
    <group>
      <className>org.jivesoftware.openfire.group.JDBCGroupProvider</className>
    </group>
  </provider>
  <jdbcAuthProvider>
     <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</passwordType>
  </jdbcAuthProvider>
  <jdbcUserProvider>
     <loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL>
     <userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL>
     <allUsersSQL>SELECT username FROM myUser</allUsersSQL>
     <searchSQL>SELECT username FROM myUser WHERE</searchSQL>
     <usernameField>username</usernameField>
     <nameField>name</nameField>
     <emailField>email</emailField>
  </jdbcUserProvider>
  <jdbcGroupProvider>
       <groupCountSQL>SELECT count(*) FROM myGroups</groupCountSQL>
       <allGroupsSQL>SELECT groupName FROM myGroups</allGroupsSQL>
       <userGroupsSQL>SELECT groupName FROM myGroupUsers WHERE username=?</userGroupsSQL>
       <descriptionSQL>SELECT groupDescription FROM myGroups WHERE groupName=?</descriptionSQL>
       <loadMembersSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='N'</loadMembersSQL>
       <loadAdminsSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='Y'</loadAdminsSQL>
  </jdbcGroupProvider>
  ...
</jive>
5:备注:

在openfire/src/conf/openfire.xml文件中配置好后,需要重置设置openfire安装步骤。在设置安装步骤之前,需要对安装值进行更改,打开文件openfire/src/web/setup/setup-profile-settings.jsp找到:

       if ("default".equals(mode)) {
            // Set to default providers by deleting any existing values.
            @SuppressWarnings("unchecked")
            Map<String,String> xmppSettings = (Map<String,String>)session.getAttribute("xmppSettings");
            xmppSettings.put("provider.auth.className",org.jivesoftware.openfire.auth.DefaultAuthProvider.class.getName());
            xmppSettings.put("provider.user.className",org.jivesoftware.openfire.user.DefaultUserProvider.class.getName());
            xmppSettings.put("provider.group.className", org.jivesoftware.openfire.group.DefaultGroupProvider.class.getName());
            xmppSettings.put("provider.vcard.className", org.jivesoftware.openfire.vcard.DefaultVCardProvider.class.getName());
            xmppSettings.put("provider.lockout.className", org.jivesoftware.openfire.lockout.DefaultLockOutProvider.class.getName());
            xmppSettings.put("provider.securityAudit.className", org.jivesoftware.openfire.security.DefaultSecurityAuditProvider.class.getName());
            xmppSettings.put("provider.admin.className", org.jivesoftware.openfire.admin.DefaultAdminProvider.class.getName());
            // Redirect
            response.sendRedirect("setup-admin-settings.jsp");
            return;
        }
把相应的:provider.auth.className,provider.user.className,provider.group.className三个属性更改为上面你配置的相应类。然后重新开启openfire进行登录http://localhost:9090/跳转到设置。设置成功后,就OK了
2016-11-02 17:25:58 Raypod 阅读数 511
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34982 人正在学习 去看看 张长志


weekend110暂表示A,spark01暂表示B

1.A生成密钥,密钥就包括私钥和公钥
2.A把公钥复制给B,B便拥有了A的公钥,仅仅拥有了A的公钥没有用处,B还需要把A的复制过来的公钥放入一个身份授权的列表(在linux列表也表示为文件)

前面两步手动实现,这样已经可以免密码了但是免密码过程的内部验证机制为:
做完上面的事情之后,
1.一次来自A的登录请求 username@hostname到达B
2.B接受请求并且去身份验证列表文件查看该用户名和主机名对应的公钥
3.B用A的公钥加密一个随机字符串发送给A
4.A用自己的私钥解密B发送过来的随机字符串密文,解密结果发送给B
5.B接受该密文字符串,并且使用B用加密前的字符串与接受到来自A的字符串对比,结果一致,验证通过。

免密码登录操作步骤:

主机以及从机要使用密钥等相关命令必须都安装ssh和scp
1. centos安装SSH命令:
centos默认装有ssh所以只需要安装ssh服务即可:
yum install openssh-server -y
安装之后使用ssh提示命令未发现:
yum -y installopenssh-clients
即安装下openssh-clients就可以用ssh进行远程连接了 远程登录格式为:ssh username@hostname/ipaddress
2.(这步生成密钥及.ssh目录 如果发现机子上没有.ssh目录及没有操作这一步)
ssh-keygen -t rsa
ssh-keygen:利用ssh工具生成密钥 -t:加密 rsa:加密算法
命令之后有存密钥的默认文件地址(当前主机用户名文件下)不用再手动输入具体地址,提示再次输入密码不用输入 输入了免密码就会失效相当于每次登陆又需要密码
生成的地址文件隐藏需要查看隐藏文件 直接 ll -a
3.拷贝公钥文件到目标主机(使用ssh和scp命令关联机器都需要安装openssh-server和openssh-clients)
scp id_rsa.pub target_hostname:/文件存放目录 scp=ssh copy
4.将公钥文件内容追加到指定文件中后,按照ssh规定必须指定固定文件名和固定文件的各种权限到.ssh下面
第一次没有authroized_keys需要在.ssh下面生成authorized_keys 指定该文件权限rw 所属用户(这里只需要改为rw权限即可 即chmod 600 authorized_keys)
追加文件内容:cat 原文件 >> 目标文件

-----------------至此搭建SSH免密码登录成功 本机需要登录某一个机子就让该机子保存本机的公钥即可!

登录时本机按照 ssh 用户名@主机名(或者ip地址) 方式登录即可 第一次需要输入密码 后续不再需要。
--如果上面的图不好理解 直接上一张简单,粗暴的图:

2018-09-03 18:39:24 volitationLong 阅读数 69486
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34982 人正在学习 去看看 张长志

MongoDB权限认证

阅读数 78

没有更多推荐了,返回首页