Hadoop基础实验准备
实验环境准备
一 实验目的
通过本实验对大数据实验环境配置做一个前期准备操作,了解各个节点之间的基础通信原理。
二 实验内容
该实验主要针对集群配置做前期的域名映射、SSH免密登陆工作,对SSH安全通信协议以及通信方式有所了解,对大数据服务组件之间安全通信有所了解。
三 实验要求
以小组为单元进行实验,每小组5人,小组自协商选一位组长,由组长安排和分配实验任务,具体参考实验步骤。
四 准备知识
什么是 SSH
SSH(Secure Shell)是为远程登录, 远程通信等设计的安全通信协议。是建立在应用层和传输层基础上的安全协议,主要用于计算机之间的加密登录。
SSH 提供身份认证,加密通信,完整性校验等功能.。(从定义和描述来看,是不是很像 HTTPS 中的 SSL 协议。)
为什么选择 SSH
互联网通信如果选择明文传输,一旦被截获,内容就暴露无遗。(设想一下: 登录过程当中,密码明文传输,一旦被截获密码,就有人可以冒充你登录。)
为了保证互联网的通信安全,那必然是要加密。
加密的方式可以分为两种 : 对称加密和非对称加密 。
对称加密 : 加密和解密使用同一个密钥。 (黑客如果不知道密钥,即便获取了信息,无法解密,也就无法获取通信内容。但是这样也带来一个问题,如何保存密钥。所有的客户端都是用同一个
密钥 ? 数量庞大的客户端,很难保证密钥不被窃取,一旦某个客户端密钥被窃取,黑客就能破解所有客户端信息,不安全 ! 一个客户端维护一个密钥 ? 维护成本太高了 ! 试想一下,
几十、上百万的客户端,不易维护 ! 因此,引申出来非对称加密 。
非对称加密 : 加密和解密使用不同的密钥。这两个密钥分别称为 “公钥” 和 “私钥” 。其特性为公钥加密的数据,使用私钥才能解密。私钥加密的数据,使用公钥才能解密。公钥在互联网上传输,私钥服务器持有。
这样又引申出来一个问题 ,公钥在互联网上传输,如何保证客户端接受的公钥是目标服务端的呢,也就是说如何保证公钥不被拦截、篡改呢 ? 举个例子: 中间人攻击,即黑客伪装成客户端接收服务器的公钥,然后伪装成服务端,将自己的公钥传递给客户端。这样服务端和客户端之间的通信都是通过中间人 , 那么数据也就泄露了 。
HTTPS 是如何防止公钥被篡改呢 ?
HTTPS 引入了”数字证书” 。在说数字证书之前先说一下数字签名,因为这两个概念容易混淆。
数字签名的作用 : 保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名 : 数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。
同样有个问题,我们需要证明数字签名的合法性。因此我们引入了数字证书。
数字证书 : 数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数
这里还有个问题 ,你又如何保证”数字证书”的合法性呢 ?
浏览器或移动操作系统内置了信任的根证书,只要证书为信任根颁发的或者是信任根的二级证书颁发机构颁发的。并且数字证书在有效期内(没有过期)、证书没有被吊销。那么数字证书
就是合法的。
SSH
因为不像 HTTPS 协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
SSH 以非对称加密实现身份验证。身份验证有多种途径,例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程中私钥本身不会传输到网络中。
其实 SSH 连接 Github 就是使用的第二种方式。
流程讲述下 ,无密码登录。
Client 将自己的公钥存放在 Server 上,追加在文件 authorized_keys 中。
Server 端接收到 Client 的连接请求后,会在 authorized_keys 中匹配到 Client 的公钥 pubKey,并生成随机数R,用 Client 的公钥对该随机数进行加密得到 pubKey®,然后将加密后信息发送给 Client 。
Client 端通过私钥进行解密得到随机数 R,然后对随机数 R 和本次会话的 SessionKey 利用 MD5 生成摘要 Digest1,发送给 Server 端。
Server 端会也会对 R 和 SessionKey 利用同样摘要算法生成 Digest 2。
Server 端会最后比较 Digest1和Digest2是否相同,完成认证过程。
五 实验步骤
5.1 搭建集群服务器
老师分发给学生初始裸机环境
5.2 通过SSH远程终端工具(XShell)连接环境
4 下载之后开始安装
5 步骤如下:
在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/010c4dd18f83406eb56841617a74fb92.png
【1】新建会话属性,输入IP地址和端口号(注意端口号不是默认的22,需要修改为自己的ssh端口号)并点击确定
【2】点击连接
【3】接收并保存
【4】输入用户名和密码
【5】登陆成功
【7】其他的节点连接同上,此处不再截图。节点全部连接成功,如下图所示:
5.3 添加域名映射
【1】登陆到master服务器之后,使用vi命令编辑/etc/hosts文件,添加所有主机IP地址和主机名对应关系。
vi /etc/hosts
【2】保存退出后,master服务器的域名映射即添加成功,可以使用cat命令查看/etc/hosts文件,如下图所示:
cat /etc/hosts
【3】同理,slave1、slave2也要配置好域名映射。
5.4 配置SSH免密登陆
5.4.1 生成服务器密钥(后面是连按三次回车,三台机器均需要操作)
ssh-keygen
5.4.2 配置公钥到authorized_keys文件(slave1,slave2节点)
【1】master:将公钥id_rsa.pub写入到authorized_keys(新建的)文件
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
slave1:将公钥id_rsa.pub写入到authorized_keys1(新建的)文件
cd ~/.ssh
cat id_rsa.pub >> authorized_keys1
【2】将authorized_keys1文件拷贝到master节点(需要先按照scp指令,master、slave1、slave2都要)
scp authorized_keys1 root@172.17.81.2:~/.ssh/
【3】slave2: 将公钥id_rsa.pub写入到authorized_keys2(新建的)文件
cd ~/.ssh
cat id_rsa.pub >> authorized_keys2
【4】将authorized_keys2文件拷贝到master节点
scp authorized_keys2 root@172.17.81.2:~/.ssh/
【5】切换到master,将slave1和slave2的authorized_keys1、authorized_keys2写入到master的authorized_keys文件
cat authorized_keys1 >> authorized_keys
cat authorized_keys2 >> authorized_keys
文件内容如下:
cat authorized_keys
【6】将authorized_keys文件拷贝到slave1、slave2节点的/root/.ssh/目录下
scp authorized_keys root@172.17.55.2:~/.ssh
scp authorized_keys root@172.17.10.4:~/.ssh/
【7】测试免密码登陆
分别从master节点ssh到master、slave1、slave2均不用输入密码。(从slave1节点ssh到master、slave2节点也是不用输入密码的/从slave2节点ssh到master、slave1节点也是不用输入密码的;此处不再测试截图)
六 总结
前期的基础配置准备工作,为之后的环境搭建做好充分的准备。该实验主要通过SSH免密码登陆配置,使学生对实验节点之间的这种SSH通信方式有所感知。