使用SSH克隆GitHub仓库时遭遇Permission Denied权限拒绝问题
问题解决思路
核心原因:sudo 会切换到root用户环境执行命令,而你之前配置的SSH密钥存放在普通用户的~/.ssh/目录下,root用户的~/.ssh/目录中没有对应的认证密钥,导致克隆时权限验证失败。同时主机密钥警告也是因为root用户的known_hosts文件未记录GitHub的主机密钥,和普通用户的known_hosts不是同一个文件。
解决方法
方法1:避免使用sudo克隆(推荐)
除非你必须将仓库放在需要root权限的系统目录(如/opt),否则直接用普通用户身份克隆:
git clone git@github.com:user/repo.git
如果后续需要调整目录权限,再用sudo chown或sudo chmod修改。
方法2:给root用户配置SSH密钥(如需sudo克隆)
如果必须用root身份克隆,需要为root用户单独配置SSH认证:
- 切换到root用户:
sudo su - 生成root的SSH密钥(或复制普通用户的密钥到root目录):
- 生成新密钥(一路回车即可):
ssh-keygen -t ed25519 -C "your_email@example.com" - 或复制普通用户的密钥(替换
your_user为你的用户名):cp ~your_user/.ssh/id_ed25519* /root/.ssh/
- 生成新密钥(一路回车即可):
- 设置密钥文件的正确权限(SSH对权限要求严格):
chmod 700 /root/.ssh chmod 600 /root/.ssh/id_ed25519 chmod 644 /root/.ssh/id_ed25519.pub - 将root用户的公钥(
/root/.ssh/id_ed25519.pub内容)添加到GitHub的SSH and GPG keys中 - 验证root的SSH连接:
确认返回ssh -T git@github.comYou've successfully authenticated, but GitHub does not provide shell access后,再执行克隆命令。
主机密钥警告的补充处理
清理root用户的known_hosts记录,解决主机密钥不一致问题:
sudo ssh-keygen -R github.com
内容的提问来源于stack exchange,提问作者user8758206
相关产品推荐
相关产品推荐

