在 Visual Studio 代码上使用 <git push>,但显示 "Could not read from remote repository."

To use <git push> on Visual Studio Code, but show "Could not read from remote repository."

我开始研究 Git 和 GitHub。

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

上的原始存储库(在 GitHub 中)

但是当我尝试推送 Visual Studio 代码时,我收到了这个错误

Permission denied (publickey).

fatal: Could not read from remote repository.

无法推送到原始存储库。

但是我已经使用 git bash 上的 ssh 密钥将本地存储库远程连接到原始存储库,并且我可以在本地存储库和原始存储库之间完成推送和拉取。

In others' case,他们被要求 GitHub 凭据来推送或同步,但在我的情况下,我无法被询问任何凭据,如 ssh 密钥。

遇到这种情况,我该怎么办?谢谢。

您的问题是您可能没有配置正确的 ssh 密钥。


只需按照这些步骤操作,您将立即设置您的 ssh 密钥:

  • 生成一个新的 ssh 密钥(如果您已有密钥,则跳过此步骤)
    ssh-keygen -t rsa -C "your@email"

  • home/.ssh 目录(或 windows 下的 Users/<your user>.ssh)中设置密钥后,打开它并复制内容


如何将 sh 密钥添加到 github 帐户?

  • 登录 github 帐户
  • 点击右上角的牧场主(设置)
  • 点击SSH keys
  • 点击Add ssh key
  • 粘贴您的密钥并保存

你们都准备好了:-)

我认为@codewizard 的回答是正确的。似乎 VS Code 仅使用 'id_rsa.pub' 密钥,它没有使用我配置为使用 git.exe 的其他 ssh 密钥对。(此密钥不是名称 id_rsa。)但是在生成新的 id_rsa 密钥对,我的权限仍然被拒绝(公钥)。

我在这篇博文中找到了我的答案,似乎 vs code 没有可以交互的 ssh-agent?

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

博客上的解决方案是

  • 打开命令提示符。
  • 运行 "start-ssh-agent" 并回答密码 提示。
  • 运行 "code" 从该环境启动 VS Code。

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

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

git 提取开始工作。但是我开始每 x 分钟(未计时)得到一个 openssh 密码框

所以我重新检查了密钥是否已添加 再次使用 git-bash
然后 "ssh-add ~/.ssh/id_rsa"
然后 git config --global credential.helper wincred

如果你每次都想要密码提示,那么忽略前面的两个命令并在 VS Code 的设置中禁用自动获取。
"git.autofetch": "true" 在 VS 代码中设置为 "git.autofetch": "false"

我的 Bitbucket 存储库的远程设置为使用
git@bitbucket.org:teamname/reponame.git url.

的 SSH 类型

我的密码短语启用了 SSH 密钥,这是不行的。 我将其更改为 HTTPS 版本: https://username@bitbucket.org/teamname/reponame.git

当时工作得很好。 无需在 Windows 10 等

中使用其他环境

如果您的 ssh 密钥需要密码, 那么你可以在下面尝试跳过它,它对我来说很好用

  1. eval "$(ssh-agent -s)"
  2. ssh-add-K.ssh/id_rsa
  3. 添加这个适合我的默认 ssh 配置

主持人 * AddKeysToAgent 是 使用钥匙串 是 IdentityFile ~/.ssh/id_rsa

注意,第三步很重要

例如,如果您想在 Visual Studio 代码的 Git 图表中使用 URL 的 SSH 类型,那么仅有生成的 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

并保存。

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

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