以两种方式配置多台服务器免密码来窥探免密码的内在逻辑
方式一
示意图:
1-4、ssh-****** -t dsa -P '' -f ~/.ssh/id_dsa
(执行顺序:Linux001、Linux002、lInux003、Linux004)
5-6、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys && scp ~/.ssh/authorized_keys Linux002:/root/.ssh/authorized_keys
(Linux001上执行)
7-8、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys && scp ~/.ssh/authorized_keys Linux003:/root/.ssh/authorized_keys
(Linux002上执行)
9-10、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys && scp ~/.ssh/authorized_keys Linux004:/root/.ssh/authorized_keys
(Linux003上执行)
11、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
(Linux004上执行)
12、scp ~/.ssh/authorized_keys Linux001:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys Linux002:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys Linux003:~/.ssh/authorized_keys
(Linux004上执行)
为啥这么麻烦:
因为scp是覆盖的,不是追加
验证是否成功:
在每一台服务器上,ssh连接localhost和其他三台服务器,都不需要输入密码,则配置成功
以Linux001为例:
ssh localhost date
ssh Linux002 date
ssh Linux003 date
ssh Linux004 date
注意:
如果ssh命令或scp命令报错:
-bash: ssh: command not found
-bash: scp: command not found
则先执行:
yum -y install openssh-clients
方式二
示意图:
1-4、ssh-****** -t dsa -P '' -f ~/.ssh/id_dsa
(执行顺序:Linux001、Linux002、lInux003、Linux004)
5、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
(Linux001)
6、scp ~/.ssh/id_dsa.pub Linux001:~/.ssh/id_dsa.pub2
(Linux002)
7、scp ~/.ssh/id_dsa.pub Linux001:~/.ssh/id_dsa.pub3
(Linux003)
8、scp ~/.ssh/id_dsa.pub Linux001:~/.ssh/id_dsa.pub2
(Linux004)
9、cat ~/.ssh/id_dsa.pub* >> ~/.ssh/authorized_keys
(Linux001)
10、scp -r ~/.ssh/authorized_keys Linux002:~/.ssh/ && scp -r ~/.ssh/authorized_keys Linux003:~/.ssh/ && scp -r ~/.ssh/authorized_keys Linux002:~/.ssh/
总结归纳:
1、无论是哪种方式实现免密码,都满足:
只要在任意一台机子上执行cat ~/.ssh/authorized_keys命令,都会将所有四台机子的公钥打印出来。
一台机子的认证文件中只要有了别人的公钥,别人就可以免密码访问这台机子。
2、不容质疑的公理:
只要B的认证文件cat ~/.ssh/authorized_keys中有了A的公钥,A就可以免密码访问B。
3、记忆秘诀:
请把公钥想象成一把要去锁别人家里大门的锁,而自己保存的私钥,则可以想象成是去开别人家里大门上自己的锁的钥匙,能开动锁,就能去他家,就能免密码。
思维拓展:
如果A要调度B上的脚本,则是A的公钥给B还是B的公钥给A?
答案见文章尾部。
思维拓展答案:
A的公钥给B。
答案经过测试,放心可靠。