使用bottle和gevent实现简单批量管理ssh keys项目

前言:

        话说,以前在人人网负责开发跳板机权限管理的时候,想到了用saltstack key模块做公钥的管理,但是因为最后涉及到saltstack不是太安全,放弃了。貌似现在开源社区里,没有好点的有关ssh key管理的项目。反正闲来无事,搞之 !


大家关注下我的博客,原文地址: blog.xiaorui.cc

正题:

嗯哼,既然没有找到合适的,那就自己用python简单实现。介绍下,这是一个用来简单批量管理ssh pub keys的模块,另外是支持web api的,接口的方式是rest类型接收的。不知道大家理不理解,这个项目主要是干嘛的,就是你有一个master主控节点,张三想麻烦你给他添加北京兆维nginx的所有权限,如果你们公司刚好是可以用key登陆,那就简单了,只需要让张三把ssh公钥的key给你,你放到那堆服务器的authorzied_keys文件中就可以了。 


代码已经开源,如果大家感兴趣,请多关注下,点个心:

https://github.com/rfyiamcool/batch_keys_api


也已经推送到了python源 pypi里面。 

pip install ssh_manage_api


这实现的原理很简单,就是提供一个master端来远程批量管理所有用户的key及其他集群上的key,支持web api,这个只是第一版,我会陆续更新的,现在的版本说实话,ssh_manage不高大上,而且也没有针对一些数据入库。有时间吧,下个星期争取把web ui及关联数据入库。 


TODO:

  1. api写的有些简陋,代码不优美,安全方面也没有做
  2. 对于关联的数据进行入leveldb数据库
  3. 加入管理页面

现在来说,平台已经用到的模块

bottle
gevent
sh

下面是直接调用模块的用法。 其实已经配置了一个script脚本命令,只是不太灵活,还是推荐大家集成到python中使用。  个人觉得也可以用在一些堡垒机和跳板机上,但兼容问题,需要你们自己搞定了。 

In [1]: import commands

In [2]: commands.get('root','106.186.21.211','22','raw')
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0NLlSuuv6lKGT/ruhimOOuNx6zyrB7fJxMLdxlaWoYvFSUx8RLfuQRjd6dTBiHJkr28Dk17X/i+NW2BH8SaYETtclW7OAJ3WQ79sTeS6BAWtKBWEscNduTsfzhByXXPAFcjY068xt0z8xs81+cDxeF/wjz/RJEAMObq6k8xy7N+dSaPwUWHOqHK5xZnTgGfyz3DHghwBzECv8a7OlNvAlAjydc7Z9xNEnbQzS9uFwv6il10Ci9CQYjyhdw0cBCLwhoYzUsX1iyy7ykB6GbYRgvo07cGa+Kv900dcIPvjoa6NFv/XPOimzJ3DGImcdzW5Ii9Qp+JJiJaKbWs3MFM+P xiaorui@devops.local

In [3]: commands.post('root','106.186.21.211','22',['/opt/lisan.pub','/opt/zhilin.pub'])

In [4]: commands.delete('root','106.186.21.211','22',['/opt/lisan.pub',0])

这个是web api的使用方法。 

curl -XGET http://127.0.0.1:8080/get?user=root&host=106.186.21.212&port=22

curl -XPOST -H "Content-Type: application/json" -d '{"user":"root","host":"106.186.21.211","port":"22","keylist":"['/ops/lisan.pub']"}'  http://127.0.0.1:8080/add

curl -XDELETE -H "Content-Type: application/json" -d '{"user":"root","host":"106.186.21.211","port":"22","keyid":"['/ops/lisan.pub']"}'  http://127.0.0.1:8080/delete


那就先这么招吧, 项目有些地方不够完善,现在还不推荐在线上用,等我推到2.0之后,大家就可以试试了。 


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注