SSH作为非特权用户运行,自定义身份validation,没有shell

我想有一个SSH服务器在非特权端口上运行(比如2222),这样我就可以让用户使用Bazaar DVCS ; 这个想法应该是整套存储库,而类似的东西将由一个用户拥有(从操作系统的angular度来看,也就是说),然后在该单个用户帐户的环境下运行的SSH服务器将被configuration为用户和来自某种自定义源的密码。

做这项工作需要做的大事情是:

  • SSH服务器将被迫运行一个自定义的shell程序来检查用户名并检查命令行以确保用户正在访问用户有权使用的bzr存储库/分支。
  • SSH服务器将能够确保某些环境variables被设置为指示用户名已被成功validation(否则这些都不起作用)。

我想这样做,因为通过系统的SSH服务器共享访问权限的存储库对正确的存储库权限是很麻烦的。 另外,我希望SSH服务器最终作为一个更完整的服务(使用Web界面等)的一部分运行,这样Web服务最终将pipe理与一系列Bazaar存储库相关的用户和工作组(和甚至可能分支)。 由于整体服务在操作系统级别以单一用户的身份运行,并使用自己的用户帐户(甚至可能使用OpenID),所以从本质上将SSH服务器集成到服务中将是非常有用的。

强烈build议你看看gitosis和gitolite是如何解决这个问题的(通过使用authorized_keys及其configuration强制命令的能力,理想情况下接受用户名作为命令行的一部分而不是改变环境)。