首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许git作为sudo拉扯

如何允许git作为sudo拉扯
EN

Unix & Linux用户
提问于 2020-04-03 13:05:58
回答 2查看 4.6K关注 0票数 1

我每天在我的机器上使用git pull (没有sudo),我在ssh文件夹(cat ~/.ssh/id_rsa.pub)中有一个密钥。

问题是,我不能调用sudo git pull,因为我收到了一个错误:

代码语言:javascript
复制
sudo git pull
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我的钥匙可能出问题了。

我需要在我的外部脚本中调用它(使用sudo)。

我怎么打电话给sudo git pull?我如何为sudo添加密钥?

简而言之:pull不适用于sudo,为什么?

EN

回答 2

Unix & Linux用户

发布于 2020-04-03 15:31:46

当您在sudo中使用git时,它会在/root/.ssh/中而不是在/home/yourusername/.ssh/中查找密钥。你只要把它复制到前一个,它就能工作了。

票数 2
EN

Unix & Linux用户

发布于 2022-01-19 17:44:38

当您在没有指定特定用户的情况下使用sudo运行某些东西时,您将以root用户的身份运行它。

似乎您通过SSH克隆了存储库,git (实际上是SSH )正在为root用户寻找SSH私钥,而不是您的用户:/root/.ssh//home/your-user/.ssh/

您可以尝试以下操作:

  • 使用sudo -E运行脚本:-E保留在sudo上运行时要定义的用户环境变量(一些SSH变量,我认为需要SSH_AUTH_SOCK和/或SSH_AGENT_LAUNCHER,但我不太了解细节)。
  • 在脚本中,运行git命令“”而不是“script”。要实现这一点,您可以再次依赖sudo :) sudo -E -u $(logname) git拉

注意,您使用了两次sudo -E:一次调用脚本,另一次在脚本中调用git

这应该有效:)

如果您需要更细粒度的控制哪些环境变量被导出到sudo,请使用--preserve-env=list选项而不是-E

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/577700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档