# python堡垒机
**Repository Path**: py2010/dx
## Basic Information
- **Project Name**: python堡垒机
- **Description**: python堡垒机, webssh, websftp, Xshell等软件终端, 远程桌面/VNC, 操作录像...
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 8
- **Created**: 2021-06-30
- **Last Updated**: 2024-07-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 堡垒机, webssh, websftp, jumpserver, webterminal
## README
# python堡垒机
项目最开始是在2019年初从cmdb中拆出来的堡垒机功能, 那时是python2.7的版本, 后来cmdb改成了python3.6版本,
但github一直是py2.7的, py老版本不怎更新好多人来问, 改起来重复劳动/繁烦, 后来就删掉了. 这次重新拆出整理了下最新的.
* 功能:
基于django、python3.6开发。
1. SSH堡垒机 (纯py开发, 全部开源, 详细注释)
webssh, websftp, 网站跳转到Xshell/Xftp, 上传下载, 终端录像/播放.
堡垒机/软件终端, 需在客户端电脑配置Xshell/SecureCRT.
2. 远程桌面/VNC (依赖guacamole服务端)
只支持网页方式, webrdp, webvnc, 上传下载(blog方式), 不支持堡垒机功能(软件客户端接入方式)
3. 其它的功能自己研究
* 环境:
linux
python3.6
django2.2
* 部署:
容器部署方式 (linux宿主机)
git clone https://github.com/py2010/dx
太慢的话, 可使用国内码云
git clone https://gitee.com/py2010/dx
cd dx
# 拉取镜像, 堡垒机108M, guacd(远程桌面/VNC服务端支持)143M
docker-compose pull
# 创建容器并运行
docker-compose up
等待自动部署完成, 当前目录-宿主机项目已挂载到容器/opt/dx, 方便修改/测试
如果挂载了宿主机目录, 则使用容器/opt/dx目录, 否则使用镜像自带项目/dx/
访问http://ip:8066,用户名/密码:admin/admin2021
# 如果未安装docker-compose, 也可直接使用docker命令, 就是不能智能挂载目录,
docker pull py2010/dx
docker run -it --network host -v /宿主机路径/dx:/opt/dx host py2010/dx
# 如果不挂载宿主机项目/opt/dx/, 则自动使用镜像中的目录/dx/
# 远程桌面/VNC 依赖guacamole/guacd, 如果只需SSH可以不用.
docker run --name guacd --restart=always --net=host -v /宿主机路径/dx/media:/guacamole guacamole/guacd:1.2.0
其它部署方式
pip3 install -r requirements.txt, 除了guacamole为容器时注意挂载目录, 其它都比较简单, 参考容器了解, 略
* app模块:
1. apps/cmdb 网站界面, websocket, webssh
2. apps/elfinder websftp
3. apps/generic django通用视图/模板
4. apps/guacamole 远程桌面/VNC客户端
5. apps/term SSH堡垒机, Xshell等软件终端
6. config 配置管理, env/settings/conf三种配置优先级便捷管理/控制
# 截图 (太麻烦了懒得弄, 暂时使用2019年老图):
2019好多老图找不到了, 暂时只有几张.
* 软件终端

* 主机列表

* 网页SFTP (在线文本编辑)

* 网页SFTP (图片预览)

* 网页终端


# 未来:
有时想对SSH堡垒机进行优化, 但没什么动力, 一般是凑合着用行了.
后续可能对SSH堡垒机接入新客户端时, 增加hash(ip), 类似负载均衡哈希模式, 不同的是对后端主机IP进行哈希,
然后将socket分配到指定的堡垒机进程. 这样同一个后端主机, 固定使用同一个进程.
以免多进程时随机, 同一主机多个连接时, 可能分别随机到不同进程, 产生多份连接.
之后webssh也可改为客户端方式通过网络连入堡垒机, 目前只是使用了堡垒机的程序以服务端方式直接处理.
# 感谢:
jumpserver
webterminal
年初发现jumpserver堡垒机功能转为go开发, 当时就想把本项目最新版发出来, 让大家多一个参考. 一直没时间(懒), 拖到现在.