Git报错:git@github.com: Permission denied (publickey)

本文介绍了解决GitHub上SSH链接权限被拒绝的问题。通过使用HTTPS端口443进行SSH连接,并修改~/.ssh/config文件来指定GitHub的公钥文件路径,成功解决了SSH链接权限被拒绝的问题。

1 错误信息

输入指令ssh -T git@github.com测试SSH链接,出现如下报错:

  1. git@github.com: Permission denied (publickey,password,keyboard-interactive).
  2. git@github.com: Permission denied (publickey).
  3. git@github.com's password:,但是即是你输入的是正确的密码,依旧提示Permission denied, please try again.

2 常规解决方法

在网上搜索相关解决方案,可以查到基本上都是说公钥没有配置好,操作如下:

  1. 生成SSH keys:ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "your_email@example.com"
  2. 配置ssh-agent:ssh-agent bashssh-add ~/.ssh/id_rsa.github
  3. 如果是多账号,则生成config:touch ~/.ssh/config
  4. 在GitHub账号页面中:settings -> SSH and GPG keys -> New SSH key

上述详细操作方法可以查阅其他博文,因为这不是本文的重点,很多人可能已经正确的配置了SSH keys,但已经无法正常链接SSH,可以看下面的解决方法。

3 其他解决方法

要测试通过 HTTPS 端口的 SSH 是否可行,请运行以下 SSH 命令:

ssh -T -p 443 git@ssh.github.com

如果你看到:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

那么说明可以通过 HTTPS 443端口建立的 SSH 连接,接下来编辑~/.ssh/config文件(C:\Users\Admin\.ssh\config),若没有该文件,可以输入如下指令新建一个:

touch ~/.ssh/config 

把下面内容填入该文件:

Host github.com
    Port 443
    HostName ssh.github.com
    User git
    IdentityFile ~/.ssh/id_rsa.github

需要注意的是IdentityFile字段的值要是.ssh文件夹中的GitHub公钥文件名。再输入:

ssh -T git@github.com

将看到:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

说明问题已经解决了。

在 Windows 操作系统中使用 `ssh -T git@github.com` 命令出现 `git@github.com: Permission denied (publickey).` 错误,可尝试以下解决办法: #### 检查 SSH 密钥是否存在 进入 `~/.ssh` 文件夹(Windows 的路径为 `C://用户/你的用户名/.ssh/`,在 Git Bash 中可使用 `cd ~/.ssh` 进入)查看是否存在 SSH 密钥文件(通常为 `id_rsa` 和 `id_rsa.pub`)[^4]。 ```bash cd ~/.ssh ls ``` #### 重新生成 SSH 密钥 若 SSH 密钥不存在或有问题,可重新生成。在 Git Bash 中运行以下命令: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 在生成过程中会提示设置密码短语,可根据需求选择是否设置。 #### 将公钥添加到 GitHub 账户 生成 SSH 密钥后,需要将公钥(`id_rsa.pub` 文件内容)添加到 GitHub 账户。在 Git Bash 中使用以下命令复制公钥内容: ```bash clip < ~/.ssh/id_rsa.pub ``` 然后登录 GitHub 账户,进入 `Settings` -> `SSH and GPG keys` -> `New SSH key`,将复制的公钥内容粘贴到 `Key` 字段,点击 `Add SSH key` 保存。 #### 测试通过 HTTPS 端口的 SSH 是否可行 运行以下 SSH 命令: ```bash ssh -T -p 443 git@ssh.github.com ``` 若这样有效,则可以覆盖 SSH 设置以强制与 GitHub.com 的任何连接均通过该服务器和端口运行。在 SSH 配置文件(`~/.ssh/config`)中添加以下部分: ```plaintext Host github.com Hostname ssh.github.com Port 443 User git ``` 若 `~/.ssh/config` 中没有 `config` 文件,可以自己创建一个无后缀的 `config` 文件。最后再次测试连接: ```bash ssh -T git@github.com ``` #### 检查 SSH 代理 确保 SSH 代理正在运行,并将私钥添加到代理中: ```bash eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值