解决在vscode中已登录了Git,但是pull/push仓库报错Permission denied (publickey).

本文介绍了在遇到Permissiondenied(publickey)错误时,如何检查并解决SSH秘钥配置问题,包括生成新密钥、添加到GitHub、Git配置验证以及在VSCode中正确拉取仓库的步骤。还提及了防火墙和代理设置的影响,以及在Mac上处理VSCode频繁要求输入密码的方法。

报错:Permission denied (publickey).

报错详细:

> git pull --tags origin main
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秘钥配置不正确或者没有正确添加到你的GitHub账户

解决

确认SSH密钥

首先,请确保你在本地机器上配置了正确的 SSH 密钥。你可以使用以下命令检查是否存在 SSH 密钥:

ls -al ~/.ssh

确保你有一个命名为 id_rsa(私钥)和 id_rsa.pub(公钥)的文件。
如果没有就重新生成SSH密钥

重新生成SSH密钥

在终端中运行以下命令来生成新的 SSH 密钥:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

然后按照提示设置一个新的 SSH 密钥,并将新的公钥添加到你的 GitHub 账户。

添加 SSH 密钥到 GitHub

确保你已将公钥(id_rsa.pub)的内容添加到你的 GitHub 账户。你可以将公钥内容复制,然后在 GitHub 账户设置中的 SSH 密钥部分添加它。

确认 Git 配置

在终端中运行以下命令,确保你的 Git 配置中有正确的用户名和邮箱:

git config --global user.name
git config --global user.email

如果没有设置,可以使用以下命令进行设置:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

验证远程仓库链接

确保你在 VS Code 中使用了正确的远程仓库链接。可以使用以下命令来查看当前配置的远程仓库链接。

git remote -v

在 VS Code 中拉取

在 VS Code 中,可以按照以下步骤拉取远程仓库:

  • 打开左侧的源代码管理图标(Ctrl + Shift + G),或者使用命令面板(Ctrl + Shift + P)并搜索 “Git: Pull”。
  • 点击上方的 “…”(更多操作) 按钮,然后选择 “Pull”。
  • 选择你想要拉取的远程分支,然后点击 “OK”。

尝试重新克隆仓库再拉取

如果以上步骤无法解决问题,你可以尝试删除本地仓库中的 SSH 远程链接,然后重新克隆仓库。在终端中运行以下命令:

git remote rm origin
git remote add origin git@github.com:username/repository.git
git fetch origin

将 username/repository.git 替换为你的实际用户名和仓库名。

补充

检查防火墙和代理设置

有时防火墙或代理设置也可能影响到 SSH 连接。确保你的网络环境没有阻止 SSH 连接到 GitHub。

使用 SSH Agent

如果使用了 SSH Agent(例如 ssh-agent 或 ssh-pageant),确保已经将 SSH 密钥添加到代理中,这样在与 GitHub 进行通信时就不需要重新输入密码。

Mac上vscode每次git操作都要输入本地ssh密码

Enter passphrase for key '/Users/xxx/.ssh/id_rsa':

ssh-add 这个命令不是用来永久性的记住你所使用的私钥的。实际上,它的作用只是把你指定的私钥添加到 ssh-agent 所管理的一个session 当中。而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent服务也就重置了。
实际使用中也的确是这样的,重启terminal就失效了

ssh-add -K ~/.ssh/id_rsa
解决 `git fetch` 报错 `Permission denied (publickey)` 的问题,通常涉及以下几个方面: 1. **检查SSH密钥是否正确配置** 确保你已经生成了SSH密钥,并将其添加到Git服务器(如GitHub、GitLab等)的账户中。使用以下命令生成SSH密钥: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 默认情况下,生成的密钥文件会保存在 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub` 中[^4]。 2. **确认SSH密钥路径** 如果你没有使用默认的SSH密钥路径,或者需要使用特定的密钥文件(例如在多账户或多服务器环境下),可以在 `.ssh/config` 文件中指定使用的密钥。例如: ```bash Host abc.cn IdentityFile ~/.ssh/your_private_key ``` 3. **确保SSH代理运行并添加密钥** 在Linux或macOS系统上,可以使用以下命令启动SSH代理并将密钥添加进去: ```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa ``` 在Windows系统上,如果使用Git Bash,也可以通过类似命令操作,或者使用GUI工具管理SSH密钥。 4. **验证SSH连接** 可以通过以下命令测试与Git服务器的SSH连接: ```bash ssh -T git@abc.cn ``` 如果一切正常,你应该看到欢迎信息;如果有错误,则需要进一步排查SSH配置或网络问题[^1]。 5. **检查远程仓库URL是否正确** 使用 `git remote -v` 查看当前远程仓库的URL,确保它是基于SSH格式的,例如: ```bash git@abc.cn:username/repo.git ``` 如果是HTTPS格式,请改为SSH格式: ```bash git remote set-url origin git@abc.cn:username/repo.git ``` 6. **处理多用户环境下的权限问题** 如果你在多用户环境下使用Git(例如用root用户执行某些操作),可能会遇到权限问题。可以通过修改Git的全局配置,将SSH密钥路径指向公共目录: ```bash git config --global core.sshCommand "ssh -i /path/to/public/key" ``` 7. **更新SSH已知主机列表** 有时旧的SSH主机密钥可能导致连接失败。可以手动删除 `~/.ssh/known_hosts` 文件中的相关条目,或者直接删除整个文件(慎用): ```bash rm ~/.ssh/known_hosts ``` 8. **在Windows系统中配置SSH密钥路径** 如果你使用的是Windows系统,并且Git无法找到你的SSH密钥,可以尝试将公钥和私钥文件放在默认路径下(如 `C:\Users\YourUser\.ssh\`),并确保文件名为 `id_rsa` 和 `id_rsa.pub`[^4]。 9. **Visual Studio 集成问题** 如果你在使用 Visual Studio(如 VS2022)时遇到该问题,确保VS使用的Git配置与命令行一致。可以在VS中设置SSH密钥路径,或切换为使用HTTPS方式访问仓库(虽然不推荐长期使用)[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值