基于密钥认证的SSH批量管理原理
企业级SSHD免密码批量管理实现思路
部署环境规划
- 项目需求分析
要求所有服务器在同一root系统用户下,实现m01机器从本地分发数据到其他两台机器上,在分发的过程中不需要系统提示输入密码验证,当然,除了分发的功能,还可以批量查看所有客户机上的CPU、LOAD、MEM、系统版本等信息。即实现从m01服务器发布数据到其他客户端服务器以及查看信息的免密码登录验证解决方案。
项目部署说明
在工作环境中,直接用root用户进行分发和管理操作,这样很不安全也很不规范,另外,如果做安全优化时禁止了root远程连接,那么使用root进行分发管理的方法就无用了,但是使用root做认证是非常简单、如果使用这样的批量管理方式,需要在安全和便捷性之间做取舍。
开始项目部署
因为m01服务器为中心管理服务器,所以我们选择在m01端建立Public Key(锁)与Private Key(钥匙)更方便,实际上只需要有一对密钥就可以,在哪个机器上建立都是一样的。
提示:在整个方案实现中,钥匙(Private Key)和锁(Public Key)仅需要建立一次即可在任意机器上执行,本次实验选择了在m01服务器生成密钥对。
使用一下命令生成秘钥
[root@m01 ~]# ssh-keygen
提示:
1)请一直按回车键即可。密钥的生成可以在任意机器上完成,且生成一次密钥即可。
2)请仔细看建立密钥过程中的屏幕信息,可以看到密钥的默认存放路径为用户家目录下的.ssh目录。
也可以使用下面两种一键非交互式创建密钥(可以用于自动化部署)的方法:
提示:请注意.ssh目录的权限为700,另外,Private Key的id_rsa文件权限为600,Public Key的id_rsa.pub当前文件权限为644。其中Private Key的id_rsa文件权限必须为600。
分发公钥(锁)
把公钥从m01拷贝到NFS、BACKUP服务器各一份,ssh-copy-id为系统自带的Shell脚本,可用来分发公钥,在m01上执行如下命令发送公钥:
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.124.46
登录NFS及BACKUP服务器,可以看到root用户家目录多了一个.ssh目录,.ssh目录里增加了一个文件authorized_keys,那么这个文件就是改了名字的id_rsa.pub文件。为什么要改成authorized_keys这个名字呢?因为默认的情况下,SSH的配置文件中默认调用的公钥路径为.ssh,文件名就是authorized_keys。
[root@backup ~]# ll /root/.ssh/
总用量 8
-rw-------. 1 root root 801 4月 11 03:19 authorized_keys
-rw-r--r--. 1 root root 704 5月 27 16:59 known_hosts
[root@backup ~]#
提示:.ssh目录的权限为700,及authorized_keys公钥锁的文件权限是600。
拷贝SSH密钥对
当需要批量拷贝秘钥时,需要用Shell结合expect交互式命令来实现。
实现批量管理服务器
开发脚本实现批量管理,如果遇到环境变量问题,可以调整环境变量配置到/etc/bashrc里面。
分发任意本地数据到所有节点的任意位置
可以开发Shell脚本实现批量免密钥分发文件