我想在非特权端口(例如 2222)上运行一个 SSH 服务器,这样我就可以让用户使用Bazaar分布式版本控制系统;这个想法是,整个存储库集等将由单个用户拥有(从操作系统的角度来看),然后在该单个用户帐户的上下文中运行的 SSH 服务器将使用来自某种自定义源的用户和密码进行配置。
要实现这一目标,需要做以下几件大事:
- SSH 服务器将被强制运行自定义 shell 程序,该程序将检查用户名并检查命令行,以确保用户正在访问
bzr
用户有权使用的存储库/分支。 - SSH 服务器将能够确保设置某些环境变量来指示哪个用户名已成功验证(否则这一切都不起作用)。
我希望这样做,因为对于通过系统的 SSH 服务器共享访问权限的存储库,保持存储库权限正确可能会很麻烦;另外,我希望 SSH 服务器最终作为更完整的服务(具有 Web 界面等)的一部分运行,以便 Web 服务最终管理与一系列 Bazaar 存储库(甚至可能是分支)相关的用户和工作组。由于整个服务将在操作系统级别作为单个用户运行并使用其自己的用户帐户概念(甚至可能使用 OpenID 之类的东西),因此将 SSH 服务器集成到整个服务中将非常有用。