通过SSH访问远程Git存储库时使用su/sudo

thk*_*ala 7 linux git ssh

假设Linux服务器上有一个远程Git存储库R. R由用户U拥有,对于该用户U,根本不允许通过SSH进行远程登录(例如root).基于密码和基于密钥的身份验证均不适用于该用户.什么允许的,但是,被登录为不同的用户,然后使用susudo发布为命令ü.

是否可以组合这两种方法,以便Git将使用susudo在远程服务器上访问存储库?

或者,是否有另一种方法来访问R而不更改其访问权限或启用U的 SSH登录?

PS:我不介意必须手动输入密码,例如在su提示符下,只要Git处理其余部分.

编辑:

从评论中可以看出,我需要澄清我想要做这样的事情的理由.R跟踪的文件是有问题的服务器正在使用的系统文件 - R不是裸存储库.这意味着无法真正移动存储库,而不是没有大量的诡计.

让Git使用sudo将允许使用保护这些文件的相同安全模型来访问R,而不是通过必须单独配置和同步的单独途径.

小智 7

哦,你可以做到

git config remote.origin.uploadpack "sudo -u U git-upload-pack"
Run Code Online (Sandbox Code Playgroud)

获得git fetch使用sudo名为远程origin.

您需要确保设置sudo以允许此用户在没有密码的情况下执行此命令,因为我看不到提示输入密码的方法.

资源:

我发现自己想要做一些类似的事情,并发现这个金块彻底埋没了 man git-config

我应该指出,这只能完成我只git fetch需要工作的一半工作.我想你可以做类似的事情,与remote.origin.receivepack为了得到git push工作,但我还没有试过.


Von*_*onC 6

更容易建立另一个监听器而不是sshd dameon:设置一个Apache,其中:

这样,你不必担心sudosu.

如果需要,您可以将其与身份验证步骤结合使用.

<Location /git>
  AuthType Basic
  AuthName "Private Git Access"
  AuthUserFile "/etc/git-auth-file"
  Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

你甚至可以用gitolite添加授权.