爱意满满的作品展示区。
Casbin

Casvisor: JumpServer 之外的开源堡垒机, Apache-2.0,一个 Go 二进制装下 SSH / RDP / VNC / Telnet

  •  
  •   Casbin ·
    PRO
    · 2h 46m ago · 166 views

    团队里管着几十台服务器,最后都会走到同一个问题:谁在什么时候连了哪台机器,做了什么?

    常见的做法是共享账号、把 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 。

    3 replies  •  2026-11-11 18:54:21 +08:00
    hefish
    hefish
    2h 29m ago
    1
    先 star 了 , 下个月来看看,本月抽不出时间。
    hefish
    hefish
    2h 27m ago
    2
    对了,问一下,有没有定期自动修改密码的功能? 这个功能虽然恶心,但。。。。但。。。等保测评有用。。。
    wsliwh
    wsliwh
    2h 18m ago
    3
    先 fork ,万一后面闭源
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2318 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:13 · PVG 21:13 · LAX 05:13 · JFK 08:13
    ♥ Do have faith in what you're doing.