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

如何解决CentOS服务器拉取GitHub代码出现Permission denied (publickey)报错问题

问题原因

每次手动执行ssh-add ~/.ssh/id_rsa仅对当前登录会话的ssh-agent进程生效,登出后会话销毁,新登录会话的ssh-agent未自动加载对应私钥,因此会重复出现公钥认证报错。

解决方案

方案1:配置SSH配置文件指定认证密钥(最推荐)

该方案无需依赖ssh-agent,SSH连接时会自动使用指定的私钥认证,永久生效。

  • 执行命令编辑SSH用户配置文件:vim ~/.ssh/config
  • 追加如下配置:
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes
  • 保存退出后执行命令设置配置文件正确权限:chmod 600 ~/.ssh/config
    配置完成后即可直接连接GitHub,无需每次登录手动执行ssh-add。

方案2:配置Shell启动时自动加载私钥到ssh-agent

如果需要用ssh-agent管理多个密钥,可配置登录时自动完成私钥加载逻辑:

  • 如果你使用Bash,编辑~/.bashrc文件;如果使用Zsh,编辑~/.zshrc文件
  • 在文件末尾追加如下内容:
# 自动加载SSH私钥到ssh-agent
if [ -z "$SSH_AUTH_SOCK" ]; then
  eval $(ssh-agent -s)
fi
ssh-add ~/.ssh/id_rsa 2>/dev/null
  • 保存退出后执行source ~/.bashrc(或对应Shell的配置文件)立即生效,下次登录时会自动执行该逻辑加载私钥。
验证方法

配置完成后执行ssh -T git@github.com,如果返回Hi 你的GitHub用户名! You've successfully authenticated...的提示,说明配置生效。

注意事项
  • 确保你的~/.ssh/id_rsa.pub公钥内容已经正确添加到GitHub账号的SSH密钥设置中
  • 私钥文件权限必须为600,可执行chmod 600 ~/.ssh/id_rsa修正权限,权限过高会被SSH服务拒绝使用
  • 如果你使用的私钥文件名不是默认的id_rsa,将上述配置中的路径替换为你实际的私钥文件路径即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:09:03