Mercurial:如何使用用户/密码设置 hg-ssh?

Mercurial:如何使用用户/密码设置 hg-ssh?

我需要授予某些外部开发人员在我们的服务器上创建 Mercurial 存储库的权限。但是,我不一定希望他们拥有实际的 SSH 登录名来浏览服务器——或者至少,我只想创建一个 SSH 帐户。我喜欢基于 hg-ssh 的解决方案涉及创建专门用于 Mercurial 的单一登录名的想法,但我真的不明白设置它的过程。

我知道创建无密码身份验证的身份验证密钥有些困难,但我并不关心这个;我只想让他们输入密码。不管怎样,我只需要尽快完成此设置,并尽量减少服务器访问权限?

答案1

如果你想使用,你必须使用 SSH 密钥hg-ssh— 仅当您使用 SSH 密钥登录时才会触发受限 shell。阅读标题hg-ssh以了解如何设置它:

~/.ssh/authorized_keys要与该选项一起使用command,请参阅 sshd(8):

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

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

这允许通过 SSH 从/向作为参数指定的存储库进行拉取/推送。如果您的所有存储库都是公共目录的子目录,则可以使用以下方法允许更短的路径:

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

您可以使用普通 shell 的模式匹配,例如:

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

答案2

hg-ssh使用 SSH 的一项功能,您可以强制执行某个命令,并且仅在使用特定的 SSH 密钥时执行该命令。

如果你配置了密钥来执行/bin/echo "Hello, goodbye" and you startssh login@host /bin/ls` ,则输出将是“Hello, goodbye”并且连接将结束。

相关内容