我需要让某些外部开发人员在我们的服务器上创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-forwarding,no-X11-forwarding,no-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”,连接就会结束。