一、产生背景
在实际工作中,linux集群需要自动化的管理,市面上较常见的自动化运维工具诸如ansible,puppet,saltstack;轻量级的有pssh系列,这其中大多数工具使用的前提就是集群配置有公钥机可免密ssh登录集群内所有服务器,所以要先配置一台公钥机使用。
二、配置实例
1、在除公钥机外所以服务器生成密钥
[root@test ~]# cd /root/.ssh/ [root@test .ssh]# ll 总用量 4 -rw-r--r--. 1 root root 396 11月 1 2016 known_hosts [root@test .ssh]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:cBjbvfy9VkWLQpJESgqLHeq923mm4EF1Vb1L4wGs0IU root@test The key's randomart image is: +---[RSA 2048]----+ | o ..++*o. | | + + o*oE + . .| | o o o+o+ = . o..| |. . . .o o o * ..| | . o S o + + .| | . . . + .| | + . .. | | . = .o .. | | o ++ .. | +----[SHA256]-----+ [root@test .ssh]# [root@test .ssh]# ll 总用量 12 -rw-------. 1 root root 1679 11月 2 11:43 id_rsa -rw-r--r--. 1 root root 391 11月 2 11:43 id_rsa.pub -rw-r--r--. 1 root root 396 11月 1 2016 known_hosts
2、在第一台服务器上创建authorized_keys文件,并修改权限,用以保存所有服务器的公钥
[root@test .ssh]# touch authorized_keys [root@test .ssh]# chmod 600 authorized_keys [root@test .ssh]# cat id_rsa.pub >> authorized_keys
3、将authorized_keys文件复制到下一台服务器,并重复以上两个步骤
[root@test .ssh]# scp authorized_keys root@192.168.0.11:~/.ssh/
4、重复以上步骤,直至最后一台服务器,将authorized_keys文件复制到第一台机器对应目录下
[root@test .ssh]# scp authorized_keys root@192.168.0.1:~/.ssh/ [root@test .ssh]# chmod 600 authorized_keys
5、在第一台机器上将authorized_keys文件复制给所有机器
[root@test ~]# pscp -h serverlist.txt /root/.ssh/authorized_keys /root/.ssh/authorized_keys
6、测试互免密ssh登录其他服务器即可
三、脚本实现
[root@Nginx bin]# yum install expect -y [root@Nginx bin]# find / -name expect /usr/bin/expect [root@Nginx bin]# touch /root/.ssh/authorized_keys [root@Nginx bin]# vim self_ssh.sh 1 #!/usr/bin/expect -f 2 # 3 set timeout 3 4 set ip_list [open /home/jiayimeng/bin/ip r] 5 while { [gets $ip_list line ]>=0 } { 6 set ip [lindex $line 0] 7 spawn ssh root@$ip 8 expect "*yes/no:" { send "yes\r" } 9 expect "*password:" { send "123456\r" } 10 expect "#" 11 send "cat /root/.ssh/id_rsa.pub | ssh root@192.168.3.25 'cat >> .ssh/authorized_keys'\r" 12 expect "*password:" { send "123456\r" } 13 expect "#" { send "exit\r"} 14 interact 15 } ip中写明所有机器的ip地址
四、总结
在不连接外部互联网的特定集群中,公钥机的使用大大方便了运维人员管理维护集群,系统集成人员集成施工的一系列操作;同时,由于公钥机的特殊,要做好公钥机的安全工作。
转载于:https://blog.51cto.com/jiayimeng/1978370