在Visual Studio代码上使用<git push>,但显示"无法从远程存储库读取".

Irr*_*lle 19 git github visual-studio-code

我开始研究Git和GitHub.

现在,我可以创建我的存储库来练习,我可以在git bash上将提交推送到源存储库(在GitHub中).

但是当我试图推动Visual Studio Code时,我收到了这个错误

权限被拒绝(publickey).

致命:无法从远程存储库读取.

并且无法推送到原始存储库.

我已经使用git bash上的ssh密钥远程本地存储库到源存储库,我可以在本地存储库和源存储库之间完成推送和拉取.

在其他情况下,他们被要求GitHub凭据推送或同步,但在我的情况下,我不能被问到任何凭证,如ssh密钥.

在这种情况下,我该怎么办?谢谢.

mus*_*aft 40

我认为@codewizard的答案是正确的.似乎VS代码只使用'id_rsa.pub'键,它没有使用git.exe配置使用的其他ssh密钥对.(此密钥不是名称id_rsa.)但是在生成新的id_rsa密钥对后,我仍被许可拒绝(publickey).

我在这个博客文章中找到了我的答案,似乎vs代码没有ssh-agent进行交互?

http://blog.alner.net/archive/2015/08/24/vs_code_with_git_ssh_keys_that_use_passphrases.aspx

博客上的解决方案正在进行中

  • 打开命令提示符.
  • 运行"start-ssh-agent"并回答密码短语提示.
  • 运行"代码"以从该环境启动VS代码.

我用git-bash
启动ssh代理: eval "$(ssh-agent -s)"
然后"code"启动VS Code

注意:正如@JoshuaH在评论中指出的那样,您可以创建一个Windows快捷方式来完成上述步骤. cmd /c start-ssh-agent & code

git fetch开始工作了.但是我每隔x分钟开始得到一个openssh密码短语框(不定时)

所以我再复查的关键是使用Git的bash再次添加
,然后"ssh-add ~/.ssh/id_rsa"
git config --global credential.helper wincred

如果每次都需要密码提示,则忽略前两个命令并在VS Code的设置中禁用自动提取.
"git.autofetch": "true"在VS代码设置中"git.autofetch": "false"

  • 只需添加,您还可以创建一个窗口快捷方式,在目标中可以放置`cmd/c start-ssh-agent&code` (8认同)
  • 最后,这正是我正在寻找的。 (2认同)

小智 6

例如,如果您想在 Visual Studio Code 的 Git Graph 中使用 SSH 类型的 URL,那么仅仅拥有生成的 SSH 密钥对以及在终端内的本地存储库和原始存储库之间进行推送和拉取的可能性是不够的。因为在终端中,系统始终会要求您输入密码来验证您的私有 SSH 凭据。

为了在 VSCode 中通过 SSH 连接到 Github 存储库,您还需要将 SSH 密钥添加到 SSH 代理

这些是您需要执行的附加步骤(使用标准 MacOS 版本的 ssh-add):

  1. 检查 SSG 代理是否添加了现有身份:ssh-add -l
  2. 创建一个~/.ssh/config文件,添加以下行:
 Host *
 UseKeychain yes
 AddKeysToAgent yes
 IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

并保存。

这告诉 SSH 代理自动加载密钥并将密码存储在您的 MacOS 钥匙串中。

  1. 将您的私钥添加到 SSH 代理:ssh-add -K ~/.ssh/id_rsa
  2. 通过列出现有身份来检查代理是否成功存储密钥:ssh-add -l