Casvisor: JumpServer 之外的开源堡垒机, Apache-2.0,一个 Go 二进制装下 SSH / RDP / VNC / Telnet
Apache-2.0 开源堡垒机 Casvisor:纯 Go 单二进制,docker 一行起(19000 网页端 + 2222 SSH 网关),覆盖 SSH/RDP/VNC/Telnet 全协议会话录像、Casbin 细粒度权限、命令正则拦截、实时旁观断连、补丁批量安装,无 AFF 无收费。隐性门槛:本地账号无 MFA 需接 Casdoor;录像仅存本机不可上 S3;无数据库代理/K8s/多账号改密/工单/资产树批量导入。
V2EX 原帖被 Cloudflare 拦截,读不到回复;全网未检出 Casvisor 的大规模使用口碑,站内历史库亦无往期记录,属新项目须按高风险审视。加分项:同门 Casbin/Casdoor 系国内成熟开源,GitHub 提交可查。本项目非 VPS,vps789 延迟丢包红黑榜与 vhost.fans 库存榜均不适用;真正风险是单人/小团队维护、缺第三方生产案例与安全审计。
横向:JumpServer 社区版免费但 Java 栈重,RDP 代理与 Magnus 数据库在企业版;Teleport 社区版限企业规模;Next Terminal 2.0 服务端闭源且免费限 100 资产;Boundary 已归档;Warpgate(Apache-2.0/Rust)是最直接平替,但协议覆盖与自研 gordp 的 RDP 画质路径略逊。纵向:完全零成本自托管,无首年促销续费暴涨陷阱,只需自备一台机器(阿里云 99/年或 DMIT $29.9/年即可跑)。
定性:真香好价可锁单——零成本拿下全协议堡垒机核心能力,是小团队自建的首选试验田。上线前务必:核 GitHub star/issue 响应与发版节奏、在自有环境实测 RDP 与网关、评估单机 SQLite 录像容量与备份(无 S3)、确认无数据库审计是否致命。
团队里管着几十台服务器,最后都会走到同一个问题:谁在什么时候连了哪台机器,做了什么?
常见的做法是共享账号、把 SSH 密码发在群里,或者大家一起用同一个跳板机账号。真出了事,登录日志里只有一行 IP ,查不到人;有人把密码带走,也无从知道。
堡垒机就是解决这个的。但看了一圈开源的选项:
- JumpServer:国内事实标准,但 RDP 代理、数据库的原生客户端代理( Magnus )、远程应用这些放在企业版里;
- Teleport:AGPL ,社区版二进制对企业规模和收入有限制;
- Next Terminal:2.0 起服务端闭源,免费版限 100 个资产;
- Boundary:仓库已经归档;
- Warpgate:Apache-2.0 ,Rust ,单二进制,是目前最接近「完全开源」的对手。
我们想要的是:功能完整、一个二进制就能跑、能接自己的 SSO 。找不到,就自己写了 Casvisor 。
连接
SSH:网页里是 xterm.js 终端,旁边带一个文件面板,走 SFTP 上传下载。
RDP:自己写的纯 Go 客户端 gordp,支持 NLA 、GFX 图形管道( ClearCodec 和 RemoteFX Progressive ,和 Windows 自带客户端一样的画质路径)、高 DPI 下的清晰字体、远程光标、剪贴板、跟随窗口改大小、通过重定向的磁盘传文件。Windows Server 、Windows 10/11 都连过,FreeRDP 那一类主机也能连。
VNC:noVNC ,VNC 的认证由后端做,浏览器拿不到 VNC 密码。
Telnet:给交换机、老设备用,自动填资产里存的账号。
SSH 网关:ssh -p 2222 [email protected],scp 、sftp 、rsync 、Xshell 、VS Code Remote 都能用,用公钥登录,权限和网页里是同一套。
网域网关:机器在另一个机房、或者在公司 NAT 后面,Casvisor 直连不到时,用一个 SSH 跳板机中转;连跳板机都没有的网络,可以在里面随便找台机器跑 casvisor agent,它主动连出来,不监听端口。
密码和私钥都是加密存库的,SSH 主机密钥和 RDP 证书首次连接时记下来,之后变了就拒绝连接。用户全程看不到服务器的密码。
控制
权限按 用户 / 用户组 × 资产 / 资产标签 来配,动作有连接、复制、粘贴、上传、下载、端口转发,可以限来源 IP 段和有效期。用的是 Casbin 。
命令规则:正则匹配,命中就拦(不把回车发给目标机器,改发 Ctrl+C )或只告警。网页终端和 SSH 网关都生效。
撤销立即生效:改权限、删权限、权限到期,已经连着的会话会被断开。
审计
四种协议的会话都录像,回放就在浏览器里,用的是实时连接那套代码。SSH 和 Telnet 的录像还能下载成 asciicast 。
在线会话可以实时旁观,也可以直接断掉。
SSH/Telnet 的命令记录是从一个虚拟屏幕里读的,Tab 补全、上箭头调历史、中文、行内编辑都能记准; vi 、top 这种全屏程序里的回车和输密码不记。
文件传输和所有 API 改动都在操作日志里。
运维
顺带做了补丁管理:SSH 资产可以扫描待装的系统更新,一键安装、重启。Windows 走 Windows Update 的 COM 接口,Linux 支持 apt / dnf / yum 。
部署
docker run -d --name casvisor -p 19000:19000 -p 2222:2222 \
-v casvisor-db:/db -v casvisor-recordings:/recordings casbin/casvisor
默认 SQLite + 自带账号,管理员口令打印在日志里,第一次登录后改掉。要 SSO 、MFA 、LDAP 、社交登录,接 Casdoor 就行; Casdoor 的用户组直接能用在权限里。
老实说的部分
- 没有数据库代理( MySQL / PostgreSQL 的网页连接和 SQL 审计)和 K8s ,JumpServer 社区版这两个都有;
- 一个资产只有一组系统账号,没有多账号、自动改密、访问申请工单;
- 没有资产树和批量导入,资产多了管理起来比较笨;
- 录像只能存在本机目录,还不能放 S3 / OSS ;
- 本地账号模式没有 MFA ,要 MFA 得接 Casdoor ;
- 命令审计靠读虚拟屏幕,不是把键盘输入全录下来,全屏程序里的操作看不到。
在线演示: https://demo.casvisor.com (有一个假的 SSH 和一个假的 VNC 可以连) 文档: https://casvisor.org 代码: https://github.com/casvisor/casvisor
Apache-2.0 ,欢迎 issue 和 PR 。
来源:V2EX · 分享创造 · v2ex.com