今天突然再次用到免密登录,那就再做一波总结:
一、免密登录最简洁配置方法
公钥私钥的免密登录:
以hadoop102、hadoop103、hadoop104 三个节点为例:
1.查看ssh文件
命令:ls -al
执行命令:
cd /home/一般用户名
cd .ssh
ssh-keygen -t rsa (rsa: 加密算法)
三次回车 , 生成公钥和私钥
目的:使其从102~104 互通,实现免密
会出现情况:若
有以下三个文件:
authorized -keys
id_rsa
id_rdapud
.ssh目录下
将authorized -keys 移除
rm authorized -keys
重新生成自己的:ssh-keygen -t rsa
或者不删除:
步骤如下:
#接着将公用钥匙写入到authorized_keys文件中,并修改这个文件的权限(重要,请不要忽略)
[hadoop@cdh-3 ~]$cat id_rsa.pub >> authorized_keys
[hadoop@cdh-3 ~]$chmod 600 authorized_keys #设置authorized_keys的访问权限
接着====================》
自己给自己破解:实现自己免密
命令:ssh-copy-id localhost
此时再次访问自己无需密码
执行命令:exit退出
返回到102
将自己破解的公钥私钥分发到103、104 则可实现三个节点互通,且免密
命令:xsync .ssh
- 生成密钥对
ssh-keygen -t rsa 三次回车 - 发送公钥到本机
ssh-copy-id localhost 输入一次密码 - 把/home/bigdata/.ssh 文件夹发送到集群所有服务器
分别输入密码
二、分发脚本实例
搞一个分发脚本
cd ~
vim xsync
内容如下:
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done