一、需求分析:
要求所有服务器在同一个用户oldboy1系统用户下,实现A机器从本地分发数据到B\C机器上,在分发过程中不需要B\C的提示系统密码验证,除了分发功能,还需要可以批量查看客户上的cpu、load、men,系统版本等使用信息。
即实现从A服务器发布数据到B\C客户端服务器或者查看信息的免密登陆验证。
1.增加用户,在三台机器上都进行增加oldboy1用户和密码。
1)useradd oldboy1
2)id oldboy1
3)echo 123456| passwd --stdin oldboy1
2.选择A-server创建密钥
ssh-keygen -t dsa/rsa
id_dsa.pub就是要传给B\C的公钥,文件权限是644,目录权限是700
3.分发密钥到其他每一个机器上:
ssh-copy-id -i .ssh/id_dsa.pub "-p22 oldboy1@192.168.0.102"
其实 ssh-copy-id原理就是把公钥.ssh/id_dsa.pub复制到对应的oldboy1下面并且名命为authorized_keys,目录权限是700,但是文件权限为600
4.进行脚本编写,进行服务器文件的分发:(脚本和分发)
一般我们在进行分发的话,都不会用root进行,那么相对安全的有两种方法:
1)用sudo -t
例子:ssh -P52113 -t oldboy1@192.168.0.102 sudo /bin/cp ~/file/etc
2) 用 suid
例子:chmod 4755 "which rsync"
ssh 批量分发与管理方案小结:
1.利用root做ssh key验证。
优点:简单、易用
缺点:安全查,同时无法禁用root远程连接
企业80%
2.利用普通用户如oldboy1来做,思路是先把分发的文件拷贝到服务请求用户家目录,然后sudo提权拷贝到服务器的对用权限目录
优点:安全
缺点:配置复杂
3.拓展:同方案2,只是不用sudo,而是设置suid对固定命令授权
优点:相对安全
缺点:复杂,安全性较差。任何人都可以用suid命令
私钥永远是发送端的。