zoukankan      html  css  js  c++  java
  • 配置ssh免密码登录——集群学习日记

    度过了难熬的考试月时期之后,最近和小伙伴一起参加的的比赛进入了紧张的准备时期。在进行工作的时候,发现有很多基础的知识点,自己不是很清楚以及了解,所以在想,要不就边学习的时候边写下学习日记,以供自己后来不懂的时候查看,同时以希望自己的一些所得能帮助到其他人。共勉之~

    前言

    Secure Shell(缩写为SSH),是一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。传统的网络服务程序,如rsh、FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH之另一项优点为其传输的数据可以是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。

    引用于维基百科Secure Shell

    SSH的必要性

    Hadoop的Master和Slave节点之间的通信,以及Spark的Master和Worker节点之间的通信,都是通过SSH来完成的。我们不希望他们之间的每次通信都输入一次密码,所以我们需要他们之间进行SSH免密码登录。

    前期准备

    我在实验室的三台主机都是Centos 7,自带了ssh。如果没有安装的ssh的可以使用:

    yum install ssh
    

    来安装。

    使用ssh-keygen生成私钥和公钥

    命令行:

    ssh-keygen
    

    无论弹出什么信息都直接enter回车键跳过。两下回车键之后就生成了如下文件:

    其中id_rsa是私钥,id_rsa.pub是公钥。

    使用>>把公钥内容追加到anthorized_keys文件中。

    命令行:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh./authorized_keys
    

    其中authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容。

    ps:Centos 7上是没有authorized_keys这个文件的,所以追加之后会自动生成这个文件。

    测试是否可以免密码登录

    命令行:

    ssh localhost
    

    出现以下界面,说明可以免密码登录了。

    此处localhost为本机

    按照上面,同时在其他两台机子上执行同样的命令

    按照上面,同时在其他两台机子上执行同样的命令

    按照上面,同时在其他两台机子上执行同样的命令

    重要的事情说三遍!

    把公钥拷贝到其他主机上面的一种可行的方法

    我们把三台电脑分别取名为MasterSlave1Slave2。在Slave1上执行

    scp id_rsa.pub root@Master_ip:/root/.ssh/id_rsa.pub.slave1
    

    其中,Master_ipMasterip,后面的slave1只是为了区别其他文件而起的。这个可以任意。

    执行之后需要输入Masterroot的密码之后,就把文件拷贝到Master下了。

    同样Slave2上执行

    scp id_rsa.pub root@Master_ip:/root/.ssh/id_rsa.pub.slave2
    

    执行之后可以查看Master.ssh文件夹下存在刚刚的两个文件了

    紧接着的是,把上述两个文件slave1slave2追加到authorized_keys中。
    命令行:

    cat id_rsa.pub.slave1 >> authorized_keys
    
    cat id_rsa.pub.slave2 >> authorized_keys
    

    至此,我们都把每台机子的公钥都拷贝到Master下面的authorized_keys中了。

    authorized_keys文件也拷贝到其他的Slave电脑中

    命令行:(此时在Master中的.ssh文件夹下)

    scp authorized_keys root@slave1_ip:/root/.ssh/authoried_keys
    
    scp authorized_keys root@slave2_ip:/root/.ssh/authoried_keys
    

    其中slave1_ipslave2_ip,为每一台slaveip地址,输入命令之后输入每台的Slave的密码便可以。

    结言:

    到此,每台机子上面的authoried_keys都含有集群中每台机子的公钥,都可以直接使用
    ssh ip的方式直接登录了。

    参见 王家林/王雁军/王家虎的《Spark 核心源码分析与开发实战》

    文章出自kwongtai'blog,转载请标明出处!

  • 相关阅读:
    java之正则表达式
    mysql之自定义函数
    mysql之replace into与 insert into duplicat key for update
    mysql之命令行导入导出
    Echarts修改legend样式
    ubuntu出现 E: Sub-process /usr/bin/dpkg returned an error code
    ubuntu总是提是E: 不能满足依赖关系。不妨试一下 -f 选项
    ubuntu安装和查看已安装软件
    放爬虫nginx
    nginx日志切割
  • 原文地址:https://www.cnblogs.com/kwongtai/p/7224495.html
Copyright © 2011-2022 走看看