You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ubuntu EC2实例/srv目录克隆GitHub私有仓库遇权限问题

解决Ubuntu EC2实例/srv目录sudo克隆GitHub私有仓库权限问题

你遇到的问题核心是:sudo执行命令时会切换到root用户身份,而root用户没有你之前在普通用户下生成的GitHub认证SSH密钥。普通用户主目录能成功克隆,是因为git用的是该用户~/.ssh下的密钥,而sudo后root的~/.ssh目录要么不存在,要么没有对应的有效密钥,导致GitHub认证失败。

下面是具体解决办法,选一种即可:

方法1:给root用户配置SSH密钥

  • 切换到root用户:sudo -i
  • 如果root没有.ssh目录,先创建并设置权限:mkdir -p ~/.ssh && chmod 700 ~/.ssh
  • 把普通用户的密钥复制到root目录(假设普通用户是ubuntu):
    cp /home/ubuntu/.ssh/id_rsa ~/.ssh/
    cp /home/ubuntu/.ssh/id_rsa.pub ~/.ssh/
  • 设置密钥的严格权限(SSH对权限要求极高,必须配置):
    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    chown -R root:root ~/.ssh
  • 退出root:exit,之后再用sudo克隆即可正常执行

方法2:克隆时指定普通用户的SSH密钥

不用给root配置密钥,直接在克隆命令里指定普通用户的密钥路径:

GIT_SSH_COMMAND="ssh -i /home/ubuntu/.ssh/id_rsa" sudo git clone git@github.com:myusername/testwebapp.git /srv/testwebapp

这样sudo执行git时,会用你之前生成的普通用户密钥完成GitHub认证。

方法3:修改sudo配置保留HOME环境变量

编辑sudo配置文件(必须用visudo,避免语法错误导致sudo失效):
sudo visudo
找到Defaults env_reset这一行,修改为:
Defaults env_reset, env_keep += "HOME"
保存退出后,再执行sudo git clone命令时,git会读取普通用户HOME目录下的.ssh密钥,无需额外配置。

内容的提问来源于stack exchange,提问作者Shriniwas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:22:10