GitHub: Permission denied (publickey). 问题解决方法

本文介绍了使用SSH方式向GitHub推送代码时遇到的权限拒绝问题及其解决方案。通过生成SSH密钥并将其添加到GitHub账户中,可以成功解决该问题。

之前一直用https来push到github上, 今天试了下用ssh, 把origin改为ssh地址后, 用git push -u origin master出现错误:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

上网搜了一下, 原因是' You've probably not added a public key to your SSH keys.'

解决方法如下:

用下面的命令生成public key

$ ssh-keygen -t rsa

复制 public key (id_rsa.pub) 到你账户的 list of SSH keys, 再重新push.


参考:

http://stackoverflow.com/questions/14967621/fatal-the-remote-end-hung-up-unexpectedly

http://stackoverflow.com/questions/15240815/git-fatal-the-remote-end-hung-up-unexpectedly
### 常见原因与排查 出现 `git@github.com: Permission denied (publickey)` 错误通常表明 SSH 客户端无法使用有效的密钥与 GitHub 服务器进行身份验证。常见的原因包括: - **未正确生成 SSH 密钥对**:SSH 密钥未生成或未正确保存在默认路径(如 `~/.ssh/id_rsa` 或 `~/.ssh/id_ed25519`)中。 - **未将公钥添加到 GitHub 账户**:即使本地存在密钥,若未将对应的公钥添加到 GitHub 的 SSH 设置中,将无法通过身份验证[^2]。 - **SSH 代理未运行或未加载密钥**:在某些系统(尤其是 Windows)上,SSH 代理未自动启动或未手动加载密钥,导致 Git 无法使用正确的私钥进行连接。 - **配置文件错误**:`~/.ssh/config` 文件配置错误或多个 SSH 密钥共存时未正确指定 Host 别名,也可能导致 GitHub 连接失败。 --- ### 解决方案 #### 检查现有 SSH 密钥 首先检查是否存在现有的 SSH 密钥: ```bash ls -al ~/.ssh ``` 如果看到 `id_rsa` 或 `id_ed25519` 等文件,则说明已有密钥。若无,则需生成新的密钥对: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` 如果使用的是旧版本 OpenSSH 不支持 Ed25519,则可使用 RSA: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 生成完成后,将公钥内容复制到剪贴板: ```bash cat ~/.ssh/id_ed25519.pub ``` 然后将该内容粘贴到 GitHub 的 SSH 设置页面中,完成密钥绑定[^2]。 #### 启动并加载 SSH 代理 确保 SSH 代理正在运行: ```bash eval "$(ssh-agent -s)" ``` 将私钥添加到 SSH 代理: ```bash ssh-add ~/.ssh/id_ed25519 ``` 如果使用的是 Windows 系统,建议使用 Git Bash 或 PowerShell,并确保启用了 OpenSSH 客户端组件。 #### 验证 GitHub 连接 使用以下命令测试与 GitHub 的连接: ```bash ssh -T git@github.com ``` 如果一切正常,应看到类似 `Hi username! You've successfully authenticated...` 的提示。 #### 配置 SSH 配置文件(可选) 如果本地存在多个 SSH 密钥,应配置 `~/.ssh/config` 文件以确保 GitHub 使用正确的密钥: ```text Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519 ``` --- ### 替代方案:使用 HTTPS 协议 若 SSH 配置较为复杂,可以改用 HTTPS 协议克隆仓库,避免 SSH 密钥问题: ```bash git clone https://github.com/username/repository.git ``` 对于私有仓库,可以使用 Personal Access Token 替代密码进行认证。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值