Linux服务器使用SSH克隆GitHub私有仓库时权限被拒求助
解决sudo git克隆GitHub私有仓库时的公钥权限问题
问题原因
使用sudo执行git命令时,会切换到root用户身份,此时SSH会读取root用户的~/.ssh目录(/root/.ssh)下的密钥,而非你普通用户配置的密钥。你之前完成的SSH认证仅在普通用户环境下生效,root用户没有对应的授权密钥,因此出现权限被拒。
解决方案
方案1:避免使用sudo克隆(推荐)
如果目标目录不需要root权限即可写入,直接去掉sudo,用普通用户身份执行克隆:
git clone git@github.com:username/repository.git
若后续需要调整目录权限,再单独用sudo chown或sudo chmod修改。
方案2:为root用户配置SSH密钥
- 切换到root用户:
sudo su - - 复制普通用户的SSH密钥到root的.ssh目录(将
your_username替换为你的实际用户名):cp ~your_username/.ssh/id_ed25519 /root/.ssh/ cp ~your_username/.ssh/id_ed25519.pub /root/.ssh/ - 修正密钥文件权限(SSH对文件权限要求严格):
chmod 700 /root/.ssh chmod 600 /root/.ssh/id_ed25519 chmod 644 /root/.ssh/id_ed25519.pub - 验证root用户的SSH连接:
确认得到成功认证提示后,即可用ssh -T git@github.comsudo git clone克隆仓库。
方案3:让sudo继承普通用户的SSH代理
执行克隆命令时,添加-E参数保留当前用户的环境变量(包括SSH代理信息):
sudo -E git clone git@github.com:username/repository.git
内容的提问来源于stack exchange,提问作者Daniel Valencia
相关产品推荐
相关产品推荐

