1. .ssh目录的文件
a.known_hosts
第一次登录的机器在known_hosts文件里没有记录,就会出现这个,提示,输入yes后,就会记录到known_hosts文件,下次登录就不会询问了,删除该文件就会再次询问
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文件里
b.使用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文件里设置好的了
总的来说还没实现标题里说的功能,日后再补充