远程Linux服务器通过SSH推送代码至GitHub遇公钥权限拒绝问题求助
解决DigitalOcean服务器通过SSH推送代码到GitHub的公钥权限错误
你之前的操作核心误区是用本地GitBash生成的密钥来让服务器连接GitHub——服务器推送代码到GitHub时,是服务器作为客户端和GitHub建立SSH连接,因此需要在服务器本地生成SSH密钥对,而非本地电脑的密钥。
正确操作步骤
在远程Linux服务器上生成SSH密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"按提示一路回车即可,无需设置密码(或按需设置)。
复制服务器上的公钥内容:
cat ~/.ssh/id_ed25519.pub把输出的完整公钥字符串复制,替换或新增到你的GitHub账户设置中的SSH公钥列表里。
验证服务器与GitHub的SSH连接:
ssh -T git@github.com若看到类似
Hi username! You've successfully authenticated, but GitHub does not provide shell access.的提示,说明连接正常。检查仓库的远程地址格式:
git remote -v确保
origin地址是SSH格式(git@github.com:your-username/your-repo.git),而非HTTPS格式。如果是HTTPS,用以下命令修改:git remote set-url origin git@github.com:your-username/your-repo.git修复服务器SSH文件权限(关键):
服务器上的SSH相关文件权限必须严格符合要求,否则会被SSH拒绝使用:chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub
排查额外问题
如果以上操作后仍报错,执行以下命令查看SSH调试日志,定位具体错误:
ssh -vT git@github.com
日志会显示SSH连接过程中尝试使用的密钥、权限检查细节等,根据提示调整即可。
内容的提问来源于stack exchange,提问作者Shashank Singh
相关产品推荐
相关产品推荐

