来自 Visual Studio Code 和 Visual Studio(但不是 Git Bash)的“权限被拒绝”错误

问题描述 投票:0回答:2

使用运行 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 中运行。

git visual-studio-code visual-studio-2019
2个回答
6
投票

正如 @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 密钥,请按照以下步骤操作:

  1. 添加一个名为

    %HOMEPATH%\.ssh\config

    的文件
  2. 编辑

    config
    ,内容类似于以下内容(使用
    #
    添加注释):

    host github.com
     # My personal git repo for (something-cool)
     HostName github.com
     IdentityFile ~/.ssh/id_rsa_github
    
  3. 重新启动您的开发工具,例如

    Visual Studio Code


3
投票

我有相同的错误和相同的行为(来自 git bash -> OK 但来自 vscode -> KO)。它使用不带密码的 ssh 密钥,但如果您确实想使用带密码的密钥(更安全),您必须:

  • 添加到“%HOMEPATH%.ss”中的配置文件

© www.soinside.com 2019 - 2024. All rights reserved.