为 mercurial pull/clones 创建 ssh-key

为 mercurial pull/clones 创建 ssh-key

我想制作一个 ssh 密钥(无密码),以便我可以将其分发给远程用户,以便他们可以对我的存储库进行 hg pull 或 hg clone。我已经制作了一个仅使用命令 /usr/bin/hg 的 ssh 密钥,但在使用 clone 或 pull 命令时不起作用,因为命令字符串与 mercurial 内部使用的远程命令调用不匹配。

当您执行以下操作时,是否可以获取 mercurial 在远程主机上执行的命令:

hg clone ssh://user@host//path-to-repo
hg pull ssh://user@host//path-to-repo

我能否可靠地想出几个可以覆盖我所有基础的命令字符串?如果他们要使用特定修订版本,是否会通过 ssh 使用不同的远程命令?

答案1

Mercurial 附带了方便的脚本,专门用于此类受限访问。该脚本可能已在您的服务器上,名为 hg-ssh,但您也可以在此处找到它:http://www.selenic.com/repo/hg-stable/raw-file/tip/contrib/hg-ssh

要使用它,只需在文件中添加如下一行/home/user/.ssh/authorized_keys

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

这将确保拥有该密钥的人只能使用 mercurial(而不是 shell)并且只能在您列出的存储库上使用。

答案2

因此,如果您不想让他们推送,那么我建议除了 Ry4an 的答案之外,还使用 ​​hg-ssh 命令的 --read-only 选项。

相关内容