我正在使用VSCode远程到我的项目文件夹位于(符号链接)到WSL 2 VM。我克隆了我的repo从Bitbucket使用SSH和终端。
在左下角,它指示WSL: Ubuntu
,所以我目前正在远程使用它。
如果我点击Git分支指示符,我可以看到本地分支和远程分支。
问题是当我在本地提交后点击同步所有内容时,它会永远旋转。嗯,不完全是,我在永远发生之前失去了耐心...目前在当前测试中大约需要30分钟。
如果我在终端中执行git push
,那么一切都会按预期进行。
有人知道它为什么会这样吗?我该怎么解决这个问题?
我的Git输出到VSCode时总是返回git rev-parse --show-toplevel
?
我为www.example.com和www.example.com都做了git config
user.nameuser.email
SSH密钥设置在Bitbucket上。Windows和WSL 2使用相同的公钥/私钥。
"谢谢你"
5条答案
按热度按时间lrl1mhuk1#
这个问题最近引起了很多人的关注,我觉得我需要给出一个更彻底的解释。最初的答案是在WSL2还处于beta测试阶段时写的。现在一切都已经发展了,从SSH-Key中删除密码可能会导致一些漏洞。所以,在进一步讨论这个问题之前,先看看这篇文章Is it okay to use a SSH key with an empty passphrase?
问问你自己把它取下来是否安全。
我不知道最初的问题是否还有问题,我在写完这个问题后不久就放弃了WSL。
我解决了我的问题。所以,对于那些想尝试WSL2并遇到这个问题的人来说,问题是SSH密钥的密码。
https://code.visualstudio.com/docs/remote/troubleshooting#_resolving-hangs-when-doing-a-git-push-or-sync-on-an-ssh-host
如果您使用SSH克隆了一个Git仓库,并且您的SSH密钥有一个密码短语,那么VS Code的拉取和同步功能在远程运行时可能会挂起。
使用不带密码的SSH密钥,使用HTTPS克隆,或者从命令行运行git push来解决这个问题。
如果您想删除密码,请使用此问题中提到的
$ ssh-keygen -p
:https://stackoverflow.com/a/112409/55439996xfqseft2#
您也可以通过使用ssh-agent来解决这个问题。
将以下代码添加到你的~/. bashrc中,每当你打开一个终端时,如果你没有解锁,你会被提示解锁你的密钥。
图片来源:www.example.comhttps://docs.github.com/en/github/authenticating-to-github/working-with-ssh-key-passphrases#auto-launching-ssh-agent-on-git-for-windows
此外,您可以配置添加到ssh-agent的密钥的过期时间,如下所示-https://unix.stackexchange.com/questions/122511/configuring-the-default-timeout-for-the-ssh-agent
avkwfej43#
宁愿只做推拉从命令行比删除密码!
8tntrjer4#
在这种情况下,删除密码短语是最简单的选择,但您也可以查看相关问题:
microsoft/vscode-remote-release
issue 2369其中包括Elsie Hupp最近发现的变通方案(2021年2月):
我想出了一个可能的解决方案:SSH Agent Forwarding.
在SSH配置中,为远程VS代码主机添加以下内容:
(The缩进很重要。)
对我来说,使用VS代码设置为SSH进入的主机称为alpha,因此文件的部分如下所示:
如果您想对所有远程主机执行此操作,可以将其添加到
Host *
部分(尽管这显然是一个边际安全风险):它使用你用来连接到远程主机的SSH代理,并回收来自远程主机的任何SSH连接的SSH密钥,比如连接到Git。
因为VS Code会在你连接到VS Code遥控器时很乐意地提示你输入SSH密钥的密码,所以你可以在初始连接时输入密码,而不必在与Git交互时重新输入。
显然,代理转发时可以使用多个本地SSH密钥,但我还没有能够测试这一点,一般来说,我还没有能够测试这一点,但它似乎很有前途。
rt4zxlrg5#
逐个删除你添加到VS代码中的Github相关扩展,然后你就会看到它在工作。