insecure_pssh:支持密码列表的并行ssh

pssh(parallel-ssh)是linux系统管理员比较熟悉的一款并行ssh工具,很好用,但是却需要提前在各个服务器上配置好密钥认证访问。我本身不是很喜欢这种操作,对此我对这个项目进行了一些修改,让这个工具支持保存在管理机中的密码列表。

pssh使用python来编写,对我来说比较引人的就是其中的并行任务管理,可以在大批量服务器的情况下快速完成ssh等操作。pssh的实现其实是调用了linux系统自带的ssh和scp命令,这也就使得pssh在密码的管理方面存在一些问题:要么设置管理服务器和被管理服务器的信任连接(就是密钥认证访问),要么就是在使用的时候加个“-A”参数,然后输入密码。
我不喜欢这两种方式,原因是:

  1. 在执行操作前还需要先做信任连接,这也是个不小的工作量;
  2. 使用-A参数时,默认了所有的服务器都使用这个密码,如果其中有服务器密码不一致就会出现连接不上的问题。
    这两点使得我决定按自己的需要修改一个“不安全”的pssh工具出来。 修改后的pssh,我称其为insecure_pssh,”不安全的pssh”。为什么?是因为修改后的这个pssh可以把密码保存至服务器列表文件中,可以按照以下两种格式来编写服务器列表:

[user[:password]@]host[:port] host[:port] user password

也就是说,如果有台服务器192.168.1.123的用户名是root,密码是123456,端口使用22,则列表可以直接写入密码:

root:123456@192.168.1.123:22

这样的话,使用前不需要对被管理服务器做任何修改,如果需要管理的服务器包含不同的密码,也不会影响对应的操作。但是这个hosts.txt的文件是明文保存的,如果服务器被入侵,那么所有服务器的密码就一览无余了……需要考虑到这个风险。 同时我在ssh和scp命令中还加入了“-o StrictHostKeyChecking=no”的参数,这样的话,即使是第一次连接被管理服务器,也不会出现提示是否保存host key的提示了。
总之就是改了一个不安全的pssh,但是对我的工作来说还是比较方便的。请各位管理员朋友考虑后再使用吧。 这个insecure-pss在github上,地址是https://github.com/knktc/insecure_pssh 欢迎各位来试用拍砖!

评论