通过PSSH批量管理Linux服务器

hehuistudent 2012-08-07

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 [email protected]:/home/wwwftp/.ssh/authorized_keys

正确的ssh指定端口方法『注意:1.是小写的p,2.在host之后』

ssh [email protected] -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

相关推荐