通过 SSH 在 Ubuntu 22.04 专用服务器上为每个用户提供隔离的可写持久环境(无 GUI)

通过 SSH 在 Ubuntu 22.04 专用服务器上为每个用户提供隔离的可写持久环境(无 GUI)

我有一台正在运行的裸机服务器Ubuntu 22.04。由多个用户共享。服务器主要用于一些繁重的开发人员工作:构建、调试等。用户只有 SSH访问,服务器上没有 GUI,最好保持这种状态。

一切都很好,直到多个用户想要同时启动一些占用某些不可共享资源(如文件锁或 TCP 端口)的软件(例如 HTTP 服务器)。可以协商和分配不同的端口等,但这很麻烦,需要一些手动干预。

有没有办法在登录时将每个用户的会话包装到某个容器或虚拟机中?

KVM 似乎是一个理想的解决方案,但指南要么过时,要么混乱,要么需要 GUI 访问,或者以上皆有。

Docker 是一个不错的解决方案,但我们需要在用户会话内部的 Docker 容器中运行一些软件,而且我听说 docker-in-docker 不是最好的,最好避免。

不过说实话,我并不关心使用什么隔离技术,只要文件系统、TCP 端口、不同用户的进程相互隔离就行。为了简单起见,我们把这种技术称为 VM(虚拟机)。

理想的解决方案:

  • 不需要重新安装主机操作系统
  • VM 可写且持久(注销后不会丢失任何内容)
  • 每个用户最多 1 个 VM,因此新的 SSH 会话进入现有的 VM。
  • 启动时间短:第一个 VM 启动时间不到 10 分钟,后续 VM 启动时间不到 1 分钟,进入已运行 VM 的时间不到 5 秒。服务器功能非常强大,因此对于合理的软件来说,这些数字似乎很容易满足。
  • 设置相对容易/自动化
  • 对其他工具来说,仅作为一个 ssh 连接是透明的(例如,可以使用 VSCode 远程 ssh 功能)
  • 为机器上的每个用户运行一个初始化脚本进行一次设置就可以了,无需自动缩放等。
  • 无需共享音频/视频等多媒体子系统(这些子系统在机器上很可能不存在)
  • 不需要在后台运行一些疯狂的专有守护进程,监视用户/VM/OS 活动并向光明会或挖掘比特币发送报告。
  • (可选)在用户注销后,让虚拟机保持活动状态一段时间(几个小时,最好是可配置的,以防连接断开)
  • (可选)允许重新使用某些自定义图像作为起点(如果用户之前没有启动虚拟机)
  • (可选)用户还可以通过 SSH 进入 HOST OS 进行维护。

你们有推荐的最新指南或预制自动化工具吗?任何帮助我都非常感谢。

提前致谢。

PS. 请不要建议每个用户使用单独的服务器,在云中盯着虚拟机,有专门使用此机器的理由。

相关内容