目录
报错: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