pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。使用是必须在各个服务器上配置好密钥认证访问。
pssh 包安装 5 个实用程序:
pssh 在多个主机上并行地运行命令。
pscp 把文件并行地复制到多个主机上。
prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
pslurp 把文件并行地从多个远程主机复制到中心主机上。
pnuke 并行地在多个远程主机上杀死进程。
1.配置服务器间密钥通信
可使用如下命令将SSH的公钥复制到被管理服务器。
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
该方法可用于scp、ssh本地不输入密码访问远程服务器,在需要输入密码的定时任务脚本中很有用。
如果被管理的服务器比较多也可以编写个脚本来复制公钥。下面是一个复制公钥到多个服务器上的脚本。
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
【注意事项1】
非默认端口的问题
与本地ssh端口无关,只与远程端口有关,使用-P参数来指点端口,端口的指定要放在scp命令和host1之间.
正确的scp指定端口方法『注意:1.是大写的P,2.在scp之后,第一个host之前』
scp -P 58422 ~/.ssh/id_rsa.pub wwwftp@192.168.1.119:/home/wwwftp/.ssh/authorized_keys
正确的ssh指定端口方法『注意:1.是小写的p,2.在host之后』
ssh wwwftp@192.168.1.119 -p58422
【注意事项2】
scp: /home/wwwftp/.ssh/authorized_keys: No such file or directory
出现以上错误,是由于远程服务器上新建好的用户默认没有.ssh目录,需要自己建立。
使用新用户登录,或者在root下:su <新用户名>
mkdir -p ~/.ssh
【注意事项3】
scp: /home/wwwftp/.ssh/authorized_keys: Permission denied
是因为在解决【注意事项2】时,使用的是root用户新建的.ssh目录,导致没有权限。改变用户属主就行。
chown -R wwwftp:wwwftp .ssh