Mercurial:如何设置用户/通过hg-ssh?

我需要让某些外部开发人员在我们的服务器上创buildMercurial存储库。 但是,我不一定希望他们有实际的SSHlogin来浏览服务器,或者至less我只想创build一个SSH帐户。 我喜欢基于hg-ssh的解决scheme涉及创build一个专门用于Mercurial使用的单一login的想法,但是我不太了解设置这个过程。

我知道创build一个用于无密码身份validation的身份validation密钥有一些问题,但我并不在意这一点。 我只是尽快让他们input密码。 无论如何,我只需要尽可能less的服务器访问这个设置?

如果要使用hg-ssh则必须使用SSH密钥 – 只有使用SSH密钥login时才会触发受限制的shell。 请阅读hg-ssh的标题,了解如何设置它:

通过command选项在~/.ssh/authorized_keys使用,请参见sshd(8):

 command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ... 

(可能还有其他一些有用的选项: no-port-forwardingno-X11-forwardingno-agent-forwarding

这允许通过SSH从/向作为参数给出的存储库进行拉/推。 如果您的所有存储库都是公共目录的子目录,则可以通过以下方式允许更短的path:

 command="cd path/to/my/repositories && hg-ssh repo1 subdir/repo2" 

您可以使用正常shell的模式匹配,例如:

 command="cd repos && hg-ssh user/thomas/* projects/{mercurial,foo}" 

hg-ssh使用SSH的一个特性,当你使用一个特定的SSH密钥时,你可以强制执行一个命令,只有这个命令。

如果你configuration了一个键来执行/bin/echo "Hello, goodbye" and you start ssh login @ host / bin / ls`,输出将是“Hello,goodbye”,连接就会结束。