【Hadoop完全分布式】ssh批量设置免登陆脚本(1)

1. .ssh目录的文件

a.known_hosts

第一次登录的机器在known_hosts文件里没有记录,就会出现这个,提示,输入yes后,就会记录到known_hosts文件,下次登录就不会询问了,删除该文件就会再次询问


z


2.authorized_keys

已验证的机器的公钥存放的地方,这里面记录的机器不用密码就可以登录,要免密码登录某台机器,就是将我的公钥放到你的authorized_keys文件里。

有个办公室是可以人脸(免密码)进入和钥匙(密码)进入的

就像我想进这个有人脸识别的办公室,那个办公室里就要记录了我的脸,我才能免钥匙(免密码)进去。





3.生成公钥和密钥

ssh-keygen 命令生成公钥和私钥,不输入保存文件名就默认保存为id.rsa(私钥),id_rsa.pub(公钥)

将公钥放到其他机器,有两种方法

a.先scp id_rsa.pub user@ip:/dir ,复制到目标机器,再cat  id_rsa.pub >> ~/.ssh/authorized_keys ,将公钥的内容追加到authorized_keys文件里


cat到authorized_keys文件


authorized_keys文件权限不对,要600才行


b.使用ssh-copy-id命令,将公钥添加到远程主机


ssh-copy-id命令

使用ssh-copy-id命令比较方便

3.批量设置ssh免登录


还没完整实现全自动,ssh登录和ssh-copy-id命令需要交互,在脚本里还没实现。

现在实现的是在每一台机器运行passh.sh脚本,可以将本机公钥复制到其他机器


a.cp_ssh.sh ,用于将passh.sh脚本发送到其他slave机器


slaves="master slave1 slave2"

 for i in ${slaves}

do

 scp passh.sh root@${i}:/root/

 #ssh root@${i} "chmod a+x /root/passh.sh;/root/passh.sh"

done 


b.passh.sh脚本,运行后在本机生成公私钥,并用ssh-copy-id复制公钥到其他机器


-N指定密码

ssh-keygen -N ""

#copy public key to remote host

slaves="master slave1 slave2"

for s in $slaves

do

#echo $s

ssh-copy-id -f -i ~/.ssh/id_rsa.pub root@${s}

done


运行完cp_ssh.sh后,需要手动登录到其他slave运行passh.sh脚本

脚本里的master,slave1,slave2是已经在hosts文件里设置好的了


总的来说还没实现标题里说的功能,日后再补充

你可能感兴趣的:(【Hadoop完全分布式】ssh批量设置免登陆脚本(1))