在 Visual Studio Code 上使用 <git push>,但显示“无法从远程存储库读取”。

Posted

技术标签:

【中文标题】在 Visual Studio Code 上使用 <git push>,但显示“无法从远程存储库读取”。【英文标题】:To use <git push> on Visual Studio Code, but show "Could not read from remote repository." 【发布时间】:2016-04-10 14:47:44 【问题描述】:

我开始学习 Git 和 GitHub。

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

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

权限被拒绝(公钥)。

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

并且未能推送到原始存储库。

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

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

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

【问题讨论】:

【参考方案1】:

我认为@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 在 cmets 中指出的那样,您可以创建一个 Windows 快捷方式来简化上述步骤。 cmd /c start-ssh-agent &amp; code

git fetch 开始工作了。但是我开始每 x 分钟(不定时)收到一个 openssh 密码框

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

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

【讨论】:

最后,这正是我想要的。 只是添加,你也可以创建一个窗口快捷方式,在目标中你可以放cmd /c start-ssh-agent &amp; code 奇怪的是,这会导致工作室代码为我打开两次 - 但至少 git push 有效! @Clayton 脏文件? github.com/Microsoft/vscode/issues/16820***.com/questions/39890926/… 所以从现在开始我需要这样做才能在 SSH 存储库中推送一些东西?【参考方案2】:

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

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

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

    检查没有由 SSG 代理添加的现有身份:ssh-add -l 创建一个~/.ssh/config 文件,添加以下行:
 Host *
 UseKeychain yes
 AddKeysToAgent yes
 IdentityFile ~/.ssh/id_rsa

然后保存。

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

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

【讨论】:

如果出现错误“Bad configuration option: usekeychain”,请添加“IgnoreUnknown UseKeychain”【参考方案3】:

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

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

那时工作得很好。 无需在 Windows 10 等其他环境中工作。

【讨论】:

【参考方案4】:

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

    eval "$(ssh-agent -s)" ssh-add -K .ssh/id_rsa 添加此默认 ssh 配置对我有用

主机 * AddKeysToAgent 是 使用钥匙串是 身份文件 ~/.ssh/id_rsa

注意,第三步很重要

【讨论】:

【参考方案5】:

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


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

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

home/.ssh 目录(或Windows 下的Users/&lt;your user&gt;.ssh)中设置好密钥后,打开它并复制内容


如何给github账号添加sh key?

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

你们都准备好了:-)

【讨论】:

谢谢!!我很晚才能确认你的回答。我会尽力做你回答的=) 不!有同样的问题并且 git bash 可以工作(git clone、pull、push 等),但 Visual Studio 代码集成终端没有。 这是为我做的!我的钥匙在~/.ssh/,但我需要它们在C:/Users/&lt;user&gt;/.ssh/

以上是关于在 Visual Studio Code 上使用 <git push>,但显示“无法从远程存储库读取”。的主要内容,如果未能解决你的问题,请参考以下文章

在Debian Mate上,Visual Studio Code严重渲染字体

“运行|调试”按钮未出现在 Visual Studio Code Java 程序上

Visual Studio Code 支持 iOS Web 应用调试

.NET core 3 API,在 Mac 上使用 Visual Studio Code 开发:如何在 IIS 上部署和配置?

Visual Studio Code 在多行上对齐函数参数

使用 Visual Studio Code 和使用定义的符号