创建具有有限权限的 SSH 用户以仅使用 Git 存储库

创建具有有限权限的 SSH 用户以仅使用 Git 存储库

我在 SunOS 服务器上托管了一个 git 存储库,我可以通过 ssh 远程使用它

git clone ssh://[email protected]/path/to/git

现在我需要添加更多用户才能访问该存储库,但不确定如何操作。

我添加了一个测试用户到 ssh,但我似乎无法限制用户权限仅使用 git。

测试用户能够通过 ssh 浏览整个服务器。

如何创建只能远程访问 git 的用户来克隆/拉/推等...

谢谢

答案1

您可以考虑使用吉托莱特单个用户下,而不是设置多个git shell 教程用户(以及所需的组和组权限,以便他们可以共享对存储库的访问权限)。

吉托莱特在服务器上以单个普通用户身份运行,并使用 SSH 公钥来区分对 Git 存储库的访问(参见“gitolite 如何使用 ssh” 了解一些细节吉托莱特进行基于 SSH 的识别)。 吉托莱特提供每个存储库、每个分支甚至每个路径的访问控制。

答案2

你基本上有两个选择。

  1. 正如 topdog 提到的,当您在服务器上创建用户时,请将其 shell 设置为git shell 教程在这里登记)。这将允许用户通过 SSH 登录,但不是运行普通的、功能齐全的 shell(例如 sh、bash 等),而是运行 git-shell,它仅提供对 git 功能的访问。

  2. 或者,你可以通过其他协议(例如 TCP)访问你的存储库(使用git-deamon) 或 HTTP/HTTPS。不过,我仅建议在只读访问的情况下采用此类方案。

您提到希望为用户支持“推送”功能,因此您应该选择选项#1。

答案3

您需要将他们的 shell 更改为 git-shell,这样他们才可以访问 git 功能。

答案4

另一种方法是限制 ssh 中的用户的访问。

http://prefetch.net/blog/index.php/2006/09/05/limiting-access-to-openssh-directives/

该示例仅使用一个用户,但如果用户在同一个组中,您可以使用 group 指令将其过滤掉。例如

AllowTcpForwarding yes
X11Forwarding yes

Match Group Users
         AllowTcpForwarding no
         X11Forwarding no
         $Here is a directive for git$

相关内容