文章目录
1、非对称加密

- 对称加密:加密和解密使用相同密钥的加密算法
- 非对称加密:加密和解密使用不同密钥的加密算法
- 非对称加密需要成对的公钥(public key)和私钥(private key)
- 公钥加密的数据 只有对应的私钥可以解密
- 私钥加密的数据 只有对应的公钥可以解密
1.1、RSA加密算法
- 主流的非对称加密算法
- 麻省理工学院工作的 Ron Rivest、Adi Shamir、Leonard Adleman 3人一起提出
- 公钥用于加密
- 私钥用于解密
2、SSH
- Secure Shell
- 安全外壳协议
- 建立在应用层基础上的安全协议
- 专为远程登录会话和其他网络服务提供安全性的协议
- SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其它操作平台
3、文件传输
-
3.1、scp命令(secure copy)
使用命令:scp -r 本地待传输文件夹 目标机器:路径
-r(recursively)是递归地复制 -
3.2、rsync命令(remote sync)
安装命令:yum install rsync
使用命令:rsync -a 待传输文件 目标服务器:路径
-a是【archive mode】;常用
4、SSH免密登录配置
| 集群IP | 192.168.1.100 | 192.168.1.101 | 192.168.1.102 |
|---|---|---|---|
| 网络映射 | hadoop100 | hadoop101 | hadoop102 |
vi /etc/hosts
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
4.1、单向免密登录
4.1.1、生成公钥和私钥
ssh-keygen
使用
ssh-keygen生成公钥和私钥(默认rsa),一路回车
4.1.2、查看公钥和私钥
[root@hadoop100 ~]# ll /root/.ssh/
总用量 8
-rw-------. 1 root root 1679 11月 27 11:14 id_rsa
-rw-r--r--. 1 root root 396 11月 27 11:14 id_rsa.pub
ll /root/.ssh/会看到id_rsa(私钥)和id_rsa.pub(公钥)
4.1.3、上传公钥到目标服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.101
(地址
192.168.1.101;用户root)
4.1.4、测试免密登录
ssh 'root@192.168.1.101'
测试免密登录,可以看到目标服务器多了个
authorized_keys
但192.168.1.101不能免密登录192.168.1.100
4.2、集群间免密登录
下面要实现
192.168.1.100、192.168.1.101、192.168.1.102之间的免密登录
- 1️⃣编辑每台机器的
/etc/hosts
vi /etc/hosts
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
ping hadoop101

- 2️⃣本地生成
authorized_keys
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop100

- 3️⃣将整个
/root/.ssh文件夹发送到另外两台机
scp -r /root/.ssh hadoop101:/root
scp -r /root/.ssh hadoop102:/root

- 4️⃣在每台检验相互之间的免密登录
ssh hadoop101

ssh 192.168.1.102

5、集群脚本示例
配置免密登录后,可以编写一些集群脚本
5.1、集群jps
man grep可查-E是正则匹配-o是不匹配行只匹配出部分
touch /usr/bin/jps.sh
chmod 777 /usr/bin/jps.sh
vi /usr/bin/jps.sh
#!/usr/bin/bash
for i in `cat /etc/hosts | grep -Eo hadoop[0-9]+`
do
echo "======= $i ======="
ssh $i "jps | grep -v Jps"
done
或者在Hadoop配置
$HADOOP_HOME/etc/hadoop/workers后
touch $HADOOP_HOME/sbin/jps.sh
chmod 777 $HADOOP_HOME/sbin/jps.sh
vi $HADOOP_HOME/sbin/jps.sh
#!/usr/bin/bash
for i in `cat $HADOOP_HOME/etc/hadoop/workers`
do
echo "======= $i ======="
ssh $i "jps | grep -v Jps"
done
5.2、集群文件分发
touch /usr/bin/rsync.py
chmod 777 /usr/bin/rsync.py
vi /usr/bin/rsync.py
#!/usr/bin/python2
import os, re, socket
a = os.sys.argv
print a
if len(a) != 2:
exit('Usage: rsync.py $JAVA_HOME')
a = a[1]
if not a.startswith('/'):
a = os.path.join(os.getcwd(), a)
if os.path.isdir(a) and not a.endswith('/'):
a += '/'
# print a
if not os.path.exists(a):
exit("Path doesn't exist")
hostname = socket.gethostname()
with open('/etc/hosts') as f:
for i in re.findall('hadoop[0-9]+', f.read()):
if i == hostname:
continue
aa = 'rsync -a %s %s:%s' % (a, i, a)
print aa
os.system(aa)
rsync.py /usr/bin/rsync.py
5.3、其它
https://yellow520.blog.youkuaiyun.com/article/details/113068462



5496



被折叠的 条评论
为什么被折叠?



