我们有一个 Web 服务器,其中包含一个作为 GitHub 项目存储的 Web 应用程序。现在我们所有人都可以从本地计算机推送到 GitHub,然后从 Web 服务器拉取。
有时我们希望在 Web 服务器上进行一些小的更改并立即看到效果,因此如果能够从 Web 服务器进行推送就太好了。
现在我为服务器创建了一个 ssh 密钥,但我不想将服务器的 ssh 密钥添加到我的 github 帐户,因为这样从服务器执行的所有 github 操作都会计入我的帐户。显然,我也不想将我的私钥复制到服务器。
是否可以将 Web 服务器的 ssh 密钥添加到 github Web 应用程序项目中,而无需为服务器创建新用户,这种情况的最佳做法是什么?
答案1
SSH 密钥是 github 上(以及其他地方)每个帐户独享的,您既不需要为服务器创建帐户,也不需要将服务器附加到个人帐户之一。
我认为您只有一个帐户供 Web 服务器上的每个人编辑 git repo/Web 应用程序。否则,您就不会受到服务器单个密钥的限制。
因此,如果您确实想从服务器直接推送到 github,您必须在 Web 服务器上创建不同的登录名/用户,然后以其中一个用户的身份登录以推送到 github。
您必须确保所有这些用户都对该.git
文件夹具有写权限,并且 git 创建的每个文件都将保留此访问权限。
我的想法是强制将git
整个存储库分组
chgrp -R git <git repo dir>
chmod -R g+s <git repo dir>
然后强制该组的新文件默认具有写访问权限
setfacl -R -m d:g:git:rwX
这是我针对具有 ACL 的 Linux Web 服务器的解决方案。如果您有 Windows Web 服务器,您可以执行相同的操作,但显然您必须在 GUI 中执行此操作或使用其他命令。
就 github/ssh 配置而言,您将为 Web 服务器上的每个用户创建一个 ssh 密钥,每个用户都会将其添加到他们的个人 git 用户帐户中。您仍然不应该将私钥从您的计算机复制到 Web 服务器。
答案2
请绝不让多个用户拥有同一个帐户。这只会导致责任的推卸。