使用运行 Windows 10 的新工作笔记本电脑,我安装了
git
、Visual Studio Code
和 Visual Studio 2019
。在对我的个人 git 存储库(托管在 github
上)中的代码进行一些测试更改后,我尝试提交这些更改并将其推送到远程存储库。
我可以执行
Stage
中的所有 Commit
、Push
和 Git Bash
操作。但在 Git Gui、VS Code 和 VS 2019 中,Stage
和 Commit
都工作正常,但 Push
失败并显示错误消息。
对于 VS Code,错误是:
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
对于 VS 2019,错误是类似的:
[email protected]: Permission denied (publickey).
Error encountered while pushing to the remote repository: Git failed with a fatal error.
Could not read from remote repository.
我该如何解决这个问题?
@DaemonPainter 的评论帮助找到了答案。我的 SSH 私钥文件名为
id_rsa_github
和 id_rsa_github.pub
。 Visual Studio 2019、Code 和 Git Gui 都希望将它们命名为 id_rsa
和 id_rsa.pub
。
解决方案是在
config
中添加一个%HOMEPATH%\.ssh
文件,内容类似于:
host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
进行更改后,
git push
可以在 Git Bash、Gut Gui、VS Code 和 Visual Studio 中运行。
正如 @DaemonPainter 指出的,一种可能性是 SSH 身份和密钥丢失。对于这个问题,描述如何添加 SSH 密钥的答案可能会引起兴趣。
我的问题是 SSH 密钥文件的命名。默认情况下,这些文件位于
%HOMEPATH%\.ssh
文件夹中,文件名为 id_rsa
和 id_rsa.pub
。 Visual Studio 2019
和 Git Gui
等开发工具需要这种命名约定。
由于我的文件用于
Github
上的个人 git 存储库,因此我将 SSH 密钥文件命名为 id_rsa_github/.pub
。在 %HOMEPATH%\.bashrc
中,添加了以下几行(最初在另一台 PC 上配置并复制过来):
# Start ssh-agent to allow git to be used
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa_github
这解释了为什么它有效
Git Bash
。
要配置非标准命名 SSH 密钥,请按照以下步骤操作:
添加一个名为
%HOMEPATH%\.ssh\config
的文件
编辑
config
,内容类似于以下内容(使用#
添加注释):
host github.com
# My personal git repo for (something-cool)
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
重新启动您的开发工具,例如
Visual Studio Code
我有相同的错误和相同的行为(来自 git bash -> OK 但来自 vscode -> KO)。它使用不带密码的 ssh 密钥,但如果您确实想使用带密码的密钥(更安全),您必须:
添加到“%HOMEPATH%.ss”中的配置文件