![创建具有有限权限的 SSH 用户以仅使用 Git 存储库](https://linux22.com/image/521485/%E5%88%9B%E5%BB%BA%E5%85%B7%E6%9C%89%E6%9C%89%E9%99%90%E6%9D%83%E9%99%90%E7%9A%84%20SSH%20%E7%94%A8%E6%88%B7%E4%BB%A5%E4%BB%85%E4%BD%BF%E7%94%A8%20Git%20%E5%AD%98%E5%82%A8%E5%BA%93.png)
我在 SunOS 服务器上托管了一个 git 存储库,我可以通过 ssh 远程使用它
git clone ssh://[email protected]/path/to/git
现在我需要添加更多用户才能访问该存储库,但不确定如何操作。
我添加了一个测试用户到 ssh,但我似乎无法限制用户权限仅使用 git。
测试用户能够通过 ssh 浏览整个服务器。
如何创建只能远程访问 git 的用户来克隆/拉/推等...
谢谢
答案1
您可以考虑使用吉托莱特单个用户下,而不是设置多个git shell 教程用户(以及所需的组和组权限,以便他们可以共享对存储库的访问权限)。
吉托莱特在服务器上以单个普通用户身份运行,并使用 SSH 公钥来区分对 Git 存储库的访问(参见“gitolite 如何使用 ssh” 了解一些细节吉托莱特进行基于 SSH 的识别)。 吉托莱特提供每个存储库、每个分支甚至每个路径的访问控制。
答案2
你基本上有两个选择。
正如 topdog 提到的,当您在服务器上创建用户时,请将其 shell 设置为git shell 教程(在这里登记)。这将允许用户通过 SSH 登录,但不是运行普通的、功能齐全的 shell(例如 sh、bash 等),而是运行 git-shell,它仅提供对 git 功能的访问。
或者,你可以通过其他协议(例如 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$