【问题标题】:git-shell equivalent of svnserve -r?git-shell 相当于 svnserve -r?
【发布时间】:2010-01-03 00:23:41
【问题描述】:

我正在尝试在我和朋友都可以访问的共享主机帐户上设置一个 git 存储库。通过将此行添加到 ~/.ssh/authorized_keys,我已经成功地使用 Subversion 存储库完成了此操作:

command="/usr/bin/svnserve -t -r /path/to/svn/repo \
  --tunnel-user=myfriend",no-port-forwarding,no-agent-forwarding,\
  no-X11-forwarding,no-pty [ssh key]

到目前为止,我已经了解到 git-shell 是 git 的 svnserve 等价物,但似乎没有 -r 选项的等价物来限制对特定路径的访问。这是有问题的,因为我不希望我的朋友访问其他 git 存储库。

我已经简要地阅读了有关 gitosis 的内容,它似乎能够做我想做的事,但我想看看是否有更简单的解决方案,然后再尝试设置另一款软件来完成这一特定要求。提前致谢!

编辑:我发现这篇文章提供了执行此操作的脚本:

http://eagain.net/blog/2007/03/22/howto-host-git.html

但实际上,它是由后来编写 gitosis 并被标记为过时的同一个人编写的。在我的情况下,gitosis 似乎也是不可能的,因为它需要创建一个专用的 UNIX 用户,而我无法使用共享主机帐户。但是,如果我误解了这些,我很乐意被证明是错误的!

【问题讨论】:

    标签: git gitosis svn


    【解决方案1】:

    这里有一些选项:

    • 控制用户可以使用普通 Unix 权限访问哪些存储库。

    • 使用受限登录 shell,例如 rssh,并让您的朋友为他的遥控器使用 rsync:// URL。

    • 通过 HTTP 或 HTTPS 使用用户名和密码为存储库提供服务以保护它。您需要启用 git 挂钩来更新元数据。

    【讨论】:

      【解决方案2】:

      我认为它比这更简单:setting up a remote git repository

      【讨论】:

      • 这是一个很好的资源,但它似乎没有涵盖我的特定问题。我了解如何设置远程 git 存储库。我需要做的是控制对它的访问,因为它不是公共存储库。
      • 忽略文章的后半部分——第一部分不应该给你一个受控制的存储库(对于可以在你的机器上登录该用户名的人)吗?可能是我遗漏了一些东西,所以如果我知道,请告诉我——我认为这可以使存储库保持私有,但也许我弄错了(应该在我自己的服务器上更改一些东西)
      • 该指南确实将存储库设为私有,因为您必须能够通过 SSH 连接才能访问它。我的情况不同的是,我在所讨论的 shell 帐户下有多个 git 存储库,并且只想允许我的朋友访问一个特定的存储库。 git-shell 似乎没有直接等效于 svnserve 的 -r 选项,它允许您将具有特定 SSH 密钥的用户执行的命令限制到特定路径。使用它,我可以将我朋友的连接设置为只能访问 ~/repos/repo1 而不是 ~/repos 下的所有内容。
      • 我认为,您需要使用单独的 ID 来赋予单独的权限。也就是说,当您和您的朋友共享同一个 ID 时,您拥有相同的权限——这就是共享的含义。如果您不想共享,请将 ID 分开。
      • 不确定您所说的 ID 是什么意思。只有一个 shell 帐户,但我们使用不同的 SSH 密钥。在这种情况下,在使用 Subversion 存储库时可以通过 svnserve 限制对特定目录的访问,但据我所知,对于 Git 存储库则不能通过 git-shell。
      【解决方案3】:

      Gitosis 被 Gitolite 取代。

      帐户不必是专用的,它可以被配置为正确保存额外的授权密钥。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-28
        • 1970-01-01
        • 2021-05-28
        • 2021-03-02
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        相关资源
        最近更新 更多