关于git push 被 Permission denied

首先我从远程GitHub上面git clone 项目是没问题的,在此之前各种ssh文件以及远程公钥都是配置过的。
在本地修改项目内容,想要上传至远程,我们一般都是使用如下三个命令:

// 添加当前目录的所有文件到暂存区
git add .
// 或者 添加指定文件到暂存区
git add <filename>

// 提交暂存区到仓库区
git commt -m "你的描述"

//上传本地指定分支到远程仓库
git push -u origin master

但是我到git push 那一步就出问题了,由于这不是我第一次碰到这个问题,所以这次记录下。

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我首先进行了测试:输入

ssh -T git@github.com 

然后输出是正常的

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

其实这也说明了我本地公钥是存在且没有什么问题的

看本地的.git/config设置的仓库url地址和github使用的链接地址是否一致,如果不一致,说明你这里有问题

cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = git@github.com:Mrhuangyi/xiaochengxu.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

解决方案

把你的公钥放到系统里面

ssh-add ~/.ssh/id_rsa
Enter passphrase for /Users/a/.ssh/id_rsa: 
Identity added: /Users/a/.ssh/id_rsa (/Users/a/.ssh/id_rsa)

之后再尝试git push 应该就没什么问题了。

### 解决 GitHub Push Permission Denied (publickey) 当遇到 `git push` 报错 `Permission denied (publickey)` 时,通常是因为 SSH 密钥配置错误或未正确添加到 GitHub 账户。以下是详细的解决方案: #### 检查现有 SSH 密钥 首先检查本地是否有已存在的 SSH 密钥对。打开终端并输入以下命令来查看是否存在密钥文件。 ```bash ls -al ~/.ssh ``` 如果看到类似 `id_rsa.pub` 或 `id_ed25519.pub` 的文件,则表示已有公钥[^1]。 #### 创建新的 SSH 密钥 如果没有找到现有的 SSH 密钥,可以生成一个新的 SSH 密钥对并与邮箱关联。 ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` 这将在默认位置创建一对新密钥,并将其命名为 `~/.ssh/id_ed25519` 和 `~/.ssh/id_ed25519.pub`[^3]。 #### 添加 SSH 私钥至 ssh-agent 启动 `ssh-agent` 并加载私钥: ```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 ``` 此步骤确保 Git 客户端能够自动使用该私钥进行身份验证[^4]。 #### 将公钥添加到 GitHub 复制刚刚生成的公钥内容并将它添加到 GitHub 帐号的安全设置里。 ```bash cat ~/.ssh/id_ed25519.pub | pbcopy ``` 登录 GitHub 后转到账户设置 -> SSH and GPG keys 页面粘贴刚才复制的内容作为新 SSH key[^2]。 #### 测试连接 完成上述操作后可以通过下面这条指令测试是否能顺利连上服务器而不会收到权限拒绝的信息。 ```bash ssh -T git@github.com ``` 正常情况下应显示一条消息表明认证成功但无 Shell 访问权。 #### 更新远程 URL 使用 HTTPS 方式代替 SSH 协议 如果不希望继续使用SSH方式也可以考虑切换成HTTPS协议来进行版本库同步工作,在这种模式下只需要提供用户名密码即可实现推送功能。 ```bash git remote set-url origin https://github.com/username/repo.git ``` 注意替换其中 username 和 repo 参数为自己实际使用的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值