【问题标题】:How to set up Mercurial server on a subdomain?如何在子域上设置 Mercurial 服务器?
【发布时间】:2019-09-08 23:33:13
【问题描述】:

假设我想将 Mercurial 存储库存储在我的服务器上 /var/repos/REPO_NAME,但我想使用 ssh://hg.example.org/REPO_NAME 而不是 ssh://hg.example.org//var/repos/REPO_NAME 来 push/pull 这个存储库。我可以这样做吗?

即我想从路径中省略/var/repos,而不必将存储库放在服务器的根目录中。

【问题讨论】:

  • 是的,你可以。只需创建与普通用户不同 HOME 的用户
  • @LazyBadger 你能详细说明一下吗?假设我 usermod -d /home/hg hg - 那么路径会变成 ssh://hg.example.org/REPO_NAME 吗?而且,更改 homedir 后,我无法在没有密码的情况下 SSH。
  • 我不确定您所说的“子域”是什么意思。
  • hg.example.org。 hg. 是子域。实际上..现在我考虑一下,子域部分与问题无关。我真正想知道的是是否有办法让我不需要指定完整路径;即省略 /var/repos 部分。不确定这是 Mercurial 的事情,还是只是 SSH 的事情。
  • 这个描述听起来像我想要的:mankier.com/8/hg-ssh

标签: ssh dns mercurial


【解决方案1】:

我找到了一个解决方案。不知道这是不是最好的。

首先,更新/etc/ssh/sshd_config为用户设置authorized_keys的位置,因为我们即将更改他们的homedir,否则sshd将无法找到它:

Match User hg
  AuthorizedKeysFile /home/hg/.ssh/authorized_keys

然后将他们的 homedir 更改为您想要快速访问的位置:

usermod -d /var/repos hg

您可以验证它是否已在 cat /etc/passwd 中设置。

然后重启sshd使更改生效:

/etc/init.d/ssh restart

SSH 以您的 hg 用户身份验证:

ssh hg@example.org
pwd # /var/repos
exit

尝试克隆:

hg clone ssh://hg@example.org/your-repo

PS:我知道这是用户,而不是子域。我还在想办法>.

【讨论】:

    【解决方案2】:

    通过结合this answer 和this article 找到另一个解决方案。

    只需编辑authorized_keys 文件:

    nano /home/hg/.ssh/authorized_keys
    

    将cd 的命令添加到您选择的目录中:

    command="cd /var/repos && $SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB3...
    

    这里的技巧是使用$SSH_ORIGINAL_COMMAND。如果您在这些链接中使用$SHELL 或/bin/bash -l,Mercurial 不会喜欢它:

    mark@MARK-DESKTOP /tmp % hg clone ssh://hg@example.org/repo
    remote: /bin/bash: line 1: hello: command not found
    remote: /bin/bash: line 2: between: command not found
    remote: /bin/bash: line 3: pairs: command not found
    

    但是有了上面的,效果很好,而且你不必改变homedir!

    实际上它的副作用是不再让你 SSH 进入:

    mark@MARK-DESKTOP /tmp % ssh hg@example.org
    Connection to example.org closed.
    

    我认为它只是让您执行该命令然后退出。但这就是 Mercurial 的功能,因此它可以用于此目的。

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2011-10-20
      • 2012-01-14
      • 2013-02-07
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 2017-12-09
      相关资源
      最近更新 更多