基于 django 实现 webssh。
通过 Django Channels 实现 WebSocket 通信。
- Linux
- Python 2.7
注意:master 版本纯属想折腾,目前暂不能运行。请下载稳定版本使用。
我们通过 Channels 用来在消费者和生产者之间传递消息,所以需要定义一个通道层。
开发测试时候采用驻留内存的通道层, 但是没有跨进程的 channel 沟通,也只能用于 "runserver",但不用下载 Redis;
实际工程部署将使用 Redis 作为我们的通道层,这两种配置方法 would 都写在 settings.py 中了。
Step1. git clone https://github.com/wenyuan/dj_webssh.git
Step2. cd dj_webssh
pip install -r requirements.txt
python project_helper/init_data.py
Step3. python manage.py runserver 0.0.0.0:8000
Step4. 访问: ip:port/admin/
通过后台进行用户和服务器管理
Step1. 访问 ip:port/admin/ 并使用超级管理员登陆
Step2. 创建 认证和授权-用户
Step3. 创建 Webssh-远程用户(远程主机的登陆用户)
Step4. 创建 Webssh-远程主机(远程主机ssh的ip和port)
Step5. 创建 Webssh-远程用户-主机(登陆方式和登陆地址)
选择一:
编辑 Webssh-用户信息(该用户可访问哪些主机)
选择二:
编辑 Webssh-用户组(该用户组的成员可访问哪些主机)
编辑 Webssh-用户信息(加入指定用户组)
- 前端页面:ip:8000
- 后台管理:ip:8000/admin
- 后台管理(用户、团队、主机、登录方式)
- webssh
- 日志审计
- 2018.12.30
- 局部重构,用 channels 代替 gevent 实现支持 websocket 通信
- 目前还未完成,有点问题(paramiko 实例对象需要持久化在内存中,暂时没找到较好的方案)