【问题标题】:Make vsCode not ask for gitlab ssh passphrase on push使 vsCode 在推送时不询问 gitlab ssh 密码
【发布时间】:2022-10-07 03:36:17
【问题描述】:

我创建了 ssh 密钥,将其添加到 gitlab 上,然后按照说明进行操作。当我从 git bash 推送时,一切正常,每次输入密码都让我很烦。但是当我尝试从 vsCode 推送时,它不会要求我输入密码并引发错误

Git:git@gitlab.com:权限被拒绝(公钥,键盘交互)。

有没有什么办法解决这一问题? 还有额外的帮助:我怎样才能阻止它每次都向我询问密码。

我知道,我的奖金帮助周围有类似的问题,但我找不到有关 vsCode 问题的任何信息。我正在使用 Windows 11。

抱歉,如果标题具有误导性。

  • 请注意,它不是吉特要求输入密码。这是ssh。 SSH 将您的密钥数据存储在加密文件中,并使用密码进行加密;而 ssh 没有节省密码,所以 ssh 需要再次输入密码-crypt 文件,获取密钥。如果 ssh 无需解密文件即可获得密钥,则 ssh 将不需要密钥。如果 ssh 可以在不解密文件的情况下获取密钥,则密钥的安全性较低。你不能同时拥有它:选择一个并接受它。
  • 请注意,ssh通过它称为“ssh 代理”的东西提供一种折衷方案。在这里,代理人获取密钥,然后程序向代理询问密钥。代理需要密码(如果有),以便它可以解密并持有密钥。这意味着密钥仅在代理运行时可用,但如果有人破坏了代理,这本身就很糟糕。同样,你不能同时拥有它:选择一种方式(使用代理,不要使用代理)并接受它。
  • 以及如何使用这个 ssh 代理?
  • 在 Windows 上?我不知道。在 macOS 上,它是预安装的,您只需在任何终端窗口中运行 ssh-add。在 Linux 上,有很多安装它的选项。
  • 也许它在带有 git bash 的 Windows 上是一样的。我回家后会试试

标签: git visual-studio-code gitlab ssh-keys windows-11


【解决方案1】:

我认为您在创建密钥时已经给出了密码,这就是为什么每次提交某些内容时都需要提供密码。 一种解决方案是更新/重新制作没有 passphase 的 ssh 密钥并将其添加到 gitlab。

【讨论】:

  • 但是不带密码短语是个好主意吗?如果我没记错的话,一定有什么东西可以将我的设备添加到白名单中。如果我错了,请纠正我
  • 密码短语的目的通常是加密私钥。这使得密钥文件本身对攻击者无用。但是你不应该在任何地方使用私钥,因为它会使你的系统容易受到攻击。最好使用公钥。
  • 但是当我创建我的 gitlab 帐户和其中的第一个项目时,它说我必须有一个 ssh 密钥。你能解释一下你在 gitlab 中的私钥和公钥是什么意思吗?它们的目的是什么?
  • 然后你就不需要密码了。在现实世界的系统中,我们也不会使用它。
  • 是的,删除密码它不会给你一个错误
【解决方案2】:

但是当我尝试从 vsCode 推送时,它不会要求我输入密码并引发错误

它会问你,从VSCode 1.72 (Sept. 2022)开始:

当带有密码的 SSH 密钥用于 Git 操作时,VS Code 现在将显示快速输入控件,以便您可以输入 SSH 密钥的密码。

密码不会被缓存,每次执行 Git 操作时都必须输入。

【讨论】:

    最近更新 更多