git push(clone)失败报错:Permission denied (publickey). fatal: Could not read from remote repository.

执行git push -u origin master时出现权限错误,原因可能是本地未生成ssh key。本文记录了解决办法,包括生成ssh key、在git bash执行相关命令、将id_rsa.pub内容添加到GitHub账号、最后验证Key等步骤,以解决权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

而当我执行git push -u origin master这条语句的时候,出现错误:

  Permissiondenied (publickey).

  fatal:Could not read from remote repository.

  Pleasemake sure you have the correct access rights

  and the repository exists.

  你在本地(或者服务器上)没有生成ssh key,你可以在git bash中执行:

  cd ~/.ssh ls来查看是否有文件id_rsa以及文件id_rsa.pub,如下图所示:(我的已经生成了,所以我ls后会显示。)

  下面记录下解决办法:

  1.首先,如果你没有ssh key的话,在ternimal下输入命令:ssh-keygen -t rsa -C "914559@qq.com", 途中一路回车即可,会生成你的ssh key。(如果重新生成的话会覆盖之前的ssh key。)

  

  2.然后再git bash下执行命令:

  ssh -v git@github.com 

  最后两句会出现:

  No more authentication methods to try.  

  Permission denied (publickey).

  3.这时候再在git bash下输入:

  ssh-agent -s

  然后会提示类似的信息:

  SSH_AUTH_SOCK=/tmp/ssh-GTpABX1a05qH/agent.404; export SSH_AUTH_SOCK;  

  SSH_AGENT_PID=13144; export SSH_AGENT_PID;  

  echo Agent pid 13144;

  4.接着再输入:

  ssh-add ~/.ssh/id_rsa

  这时候应该会提示:

  Identity added: ...(这里是一些ssh key文件路径的信息)

  (注意)如果出现错误提示:

  Could not open a connection to your authentication agent.

  请执行命令:eval `ssh-agent -s`后继续执行命令 ssh-add ~/.ssh/id_rsa,这时候一般没问题啦。

  5.打开你刚刚生成的id_rsa.pub,将里面的内容复制,进入你的github账号,在settings下,SSH and GPG keys下new SSH key,title随便取一个名字,然后将id_rsa.pub里的内容复制到Key中,完成后Add SSH Key。

  6.最后一步,验证Key

  在ternimal下输入命令:

  ssh -T git@github.com

  提示:Hi xxx! You've successfully authenticated, but GitHub does not provide shell  access.

### 解决 Git 克隆时因公钥权限被拒绝的问题 当遇到 `git clone` 提示 `Permission denied (publickey)` 的错误时,通常是因为本地未正确配置 SSH 密钥或远程服务器无法验证该密钥。以下是详细的解决方案: #### 1. 检查是否存在现有的 SSH 密钥 运行以下命令来查看 `.ssh/` 文件夹中是否已存在名为 `id_rsa.pub` 的公钥文件: ```bash cat ~/.ssh/id_rsa.pub ``` 如果返回的是类似这样的路径不存在错误消息,则说明尚未生成 SSH 密钥[^3]: ``` bash: /c/Users/cetc03.hik/.ssh/id_rsa.pub: No such file or directory ``` #### 2. 如果没有现有密钥则生成新的 SSH 密钥 如果没有找到现成的 SSH 密钥,可以通过以下命令创建一个新的 SSH 密钥对(默认情况下会保存在 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub` 中): ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 此命令将提示输入存储位置以及密码短语(passphrase)。建议保留默认设置并跳过 passphrase 设置以便简化操作。 完成之后,在 `~/.ssh/` 下应该能看到两个新文件:私钥 (`id_rsa`) 和对应的公钥 (`id_rsa.pub`)。 #### 3. 将公钥添加至目标服务提供商账户 - **对于 GitHub/GitLab 等平台** 打开浏览器登录您的账号页面,导航到 “Settings -> SSH and GPG keys”,点击按钮上传新的 SSH Key 并粘贴刚才生成的 `id_rsa.pub` 内容进去[^3]。 - **针对 Gerrit 用户** 前往个人资料中的 User Settings 页面下的 SSH Keys 部分,同样地复制上述提到过的 id_rsa.pub 文本框内容填入 New SSH key 字段内再按 ADD NEW SSH KEY 完成绑定过程[^2]. #### 4. 启动 SSH Agent 及加载身份认证信息 有时即使完成了前面几步仍可能遭遇连接失败的情况,此时需手动启动 ssh-agent 来管理 session 生命周期内的临时缓存数据,并通过下面指令加入相应证书材料: ```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa ``` 这一步骤尤其适用于 Linux 或 macOS 系统环境当中[^4]。 #### 5. 测试连通性 最后尝试重新发起仓库克隆请求前先做一次简单的 ping 请求确认网络可达性和信任关系建立成功与否: ```bash ssh -T git@github.com ``` 如果是首次访问某站点可能会弹窗询问关于主机真实性校验事宜,请按照屏幕指示回应即可继续下一步动作[^5]。 --- 以上方法基本涵盖了大部分场景下解决此类问题所需采取的技术手段集合;当然具体情况还需具体分析处理哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值