srv:~# 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: dd:e9:d3:84:fc:4c:ff:b4:b0:fa:12:fa:fd:49:3d:4d root@testsrv The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | . o o | | S . = o E| | o * oo| | . +.+o=| | . ...+.=| | .o++.+.| +-----------------+ srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.21:/root/.ssh/authorized_keys srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.22:/root/.ssh/authorized_keys srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.31:/root/.ssh/authorized_keys srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.32:/root/.ssh/authorized_keys |
如果被管理的服务器比较多也可以编写个脚本来复制公钥。下面是一个复制公钥到多个服务器上的脚本。
for i in $(seq 200 253) do ssh 192.168.159.$i -C mkdir /root/.ssh scp ~/.ssh/id_rsa.pub 192.168.1.$i:/root/.ssh/authorized_keys done |
4、为了方便使用dsh,可以将所有被管理服务器分类并存放到对应文件中。
将所有被管理服务器的IP地址(或FQDN)加入$HOME/.dsh/machines.list文件中(每行一个)。
在$HOME/.dsh/group/目录下建立名为web的文件,并将web1、web2的IP地址(或FQDN)加入其中(每行一个)。
在$HOME/.dsh/group/目录下建立名为db的文件,并将db1、db2的IP地址(或FQDN)加入其中(每行一个)。
在上述配置完成后就可以在srv上通过dsh进行批量操作了,下面我们一起来看几个例子。
1、在db1.example.zqin上执行reboot命令。
srv:~# dsh -M -m db1.example.zqin -- reboot |
2、在$HOME/.dsh/machines.list文件中定义的所有服务器上同时执行updatedb命令。
srv:~# dsh -M -a -- updatedb |
3、在$HOME/.dsh/group/web文件中定义的所有服务上面上同时执行命令。
srv:~# dsh -M -g -- /etc/init.d/apache2 restart |