【Vibe Coding】构建一个基于浏览器的 WebSSH 服务(支持命令录制,针对 HPC 等2C轻量化场景,替代 JumpServer 堡垒机)
背景
最近想在HPC系统中集成一个 WebSSH 功能,以便用户可以不用安装软件实现在浏览器中就进行命令操作。考虑到多用户使用以及最近频发的提权问题,还需要增加一个命令录制功能。
例如 JumpServer 这类堡垒机,通常只面向运维和操作人员,面对的是机器很多的场景;而 HPC 环境下机器固定的可能只有几台反而用户更多,因此用一个比较轻量的实现方式最有价值
原理
OpenSSH 服务实际上支持用户使用证书进行登录,只需要在 sshd_config 中配置一个根证书的公钥,然后利用私钥去签发 SSH 证书,就可以实现不需要密钥或者是传统的 SSH 密钥进行登录,从而大大的减少了用户密码/密钥的管理成本。
# /etc/ssh/sshd_config
TrustedUserCAKeys /etc/ssh/webssh_user_ca.pub
安全性
使用这种方法,只要掌握了根证书,理论上就掌握了服务器,所以根证书一定需要保存好,并考虑定期轮换,每台机器使用不同的根证书
由于证书完全是由我们进行签发的,所以我们直接就可以控制证书的有效期、授权用户等,实践中我们完全不会存储生成的证书,有效期也仅限一个很短的时间(存在内存中,有效期为当前时间-30s和+300s),并且认为只要用一次就过期,下一次生成新的即可
效果演示
1. 在业务系统中只需要私用已经认证过的用户信息签发 ticket 即可

2. 连接后的命令录制与回放功能,支持导出为.cast文件,后期可以转为.gif文件

本人文章禁止转载,博客地址:https://www.cnblogs.com/lijiext

浙公网安备 33010602011771号