我在 AWS 实例上有一个存储库。我可以通过 ssh 使用 VS Code 连接到实例并远程打开存储库。该实例上有一个开发容器映像,我用它从 shell 运行代码。我希望本地计算机上的 VS Code 能够远程打开实例上的存储库,但位于从我的开发映像生成的容器内。.devcontainer.json我已经在存储库中设置了这个配置文件:
{
"image": "mmclassification",
"customizations": {
"vscode": {
"extensions": ["dbaeumer.vscode-eslint"]
}
},
"forwardPorts": [3000]
}
Run Code Online (Sandbox Code Playgroud)
看起来效果很好。在远程容器之前,我的 Python 扩展无法遵循导入等操作,现在可以了。但是,VS Code 内的 git 集成停止工作。文件不再突出显示为已修改,当我在 VS Code 中打开源代码控制选项卡时,它表示它不是 git 存储库:
虽然该.git文件夹确实存在,但 VS Code 无法读取它。
仅使用远程 SSH 打开文件夹(即不在容器内)确实具有有效的 git 集成(但 Python 集成是有问题的,因为它没有在开发环境中打开)。
有什么问题?
这是一个类似的问题:在 VS Code 远程容器扩展创建的容器内未检测到 Git 存储库
然而,那里的用户似乎因为worktree他的指令而遇到问题.git/config,而我没有。
我的远程服务器上有太多与 vscode-server 相关的进程。我在这台服务器上使用远程 SSH 扩展大约半年了。似乎每次我启动连接时,即使我关闭连接,该进程也会被创建并保持活动状态。
32101 ? Sl 0:00 /home/codeally/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/node /tmp/vscode-remote-containers-server-34c19751-a5ad-42ba-9941-b3ed5ffaca29.js
32216 ? Sl 0:00 /home/codeally/.vscode-server/bin/6a995c4f4cc2ced6e3237749973982e751cb0bf9/node /tmp/vscode-remote-containers-server-1fcdaf18-27e1-417c-857e-3244a36d6fcf.js
32287 ? Sl 0:00 /home/codeally/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/node /tmp/vscode-remote-containers-server-43dcbb33-671b-4310-9e9e-01d9418efe4d.js
32347 ? Sl 0:00 /home/codeally/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/node /tmp/vscode-remote-containers-server-43dcbb33-671b-4310-9e9e-01d9418efe4d.js
32427 ? Sl 0:00 /home/codeally/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/node /tmp/vscode-remote-containers-server-43dcbb33-671b-4310-9e9e-01d9418efe4d.js
32462 ? Sl 0:00 /home/codeally/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/node /tmp/vscode-remote-containers-server-43dcbb33-671b-4310-9e9e-01d9418efe4d.js
32600 pts/56 Ss+ 0:00 /bin/bash --init-file /root/.vscode-server/bin/92da9481c0904c6adfe372c12da3b7748d74bdcb/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh
32687 ? Sl 0:00 /home/codeally/.vscode-server/bin/6a995c4f4cc2ced6e3237749973982e751cb0bf9/node /tmp/vscode-remote-containers-server-1fcdaf18-27e1-417c-857e-3244a36d6fcf.js
32712 ? Sl 0:00 /home/codeally/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/node /tmp/vscode-remote-containers-server-43dcbb33-671b-4310-9e9e-01d9418efe4d.js
root@cr-0:~# ps ax | grep -i code | wc -l
371
Run Code Online (Sandbox Code Playgroud)
经过一些连接尝试后,进程数量仍在增加。但我发现有时连接退出时它可能会杀死进程。
root@cr-0:~# ps ax | grep -i code | …Run Code Online (Sandbox Code Playgroud) 我使用的是 Mac OS,可以使用命令通过终端和 ssh 成功连接到主机
ssh -i ~/full/path/to/private_key name@ip
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用远程 SSH“连接到主机”在 Visual Studio Code 中使用完全相同的命令时,它返回“无法建立与“ip”的连接:权限被拒绝(公钥)”。
如何修复它?我尝试将本地公钥添加到主机上的authorized_keys中,但没有帮助。
在过去的几周里,我的团队一直非常成功地使用 VS Code Remote。我们的设置是此版本的大幅修改版本,它使用 AWS EC2 实例作为远程服务器。
\n为了降低成本,每台服务器都设置为在不活动 30 分钟后关闭(其中 \xe2\x80\x9cinactivity\xe2\x80\x9d 定义为 \xe2\x80\x9cpgrep无法检测到任何应该使系统保持活动状态的特定进程\xe2\x80\x9d)。不活动检查之一是
pgrep -f .vscode-server/bin/\nRun Code Online (Sandbox Code Playgroud)\n这在我们 5 个开发者系统中的 4 个上效果很好。在开发人员关闭最后一个远程窗口后的几分钟内,所有服务器端 VS Code 进程都会关闭,30 分钟后远程服务器也会关闭。
\n5 日,由于某种原因,系统从未通过不活动测试。(请参阅下面的每个开发人员实例的 CPU 利用率图,其中绿线徘徊在接近于零的位置,但从未消失。)ps x显示了许多.vscode-server/bin/显示了在用户断开其 VS Code UI 后长时间运行的我很乐意在这里发布一些经过编辑的进程信息,但是命令行太长了,很难分辨哪些信息是相关的。
我可以查找哪些设置或命令行信息来找出是什么阻止了 VS Code Server 的这一实例在断开连接后正常退出?
\n\n目前,文件中给出以下 SSH 配置~/.ssh/config:
Host cdd\n User TKTK\n HostName TKTK\n IdentityFile ~/.ssh/id_rsa\n CertificateFile ~/.ssh/id_rsa-cert.pub\nRun Code Online (Sandbox Code Playgroud)\n我可以使用 VSCode CLI 打开任何$folder,使用:
code --folder-uri "vscode-remote://ssh-remote+cdd/$folder"\nRun Code Online (Sandbox Code Playgroud)\n我的客户端 VSCode 版本在 M1 Mac 上运行。
\n\xe2\x9d\xaf code --version\n1.74.0\n5235c6bb189b60b01b1f49062f4ffa42384f8c91\narm64\nRun Code Online (Sandbox Code Playgroud)\n当我执行此操作时,它会打开文件夹并显示工作区文件,而不是直接打开 VSCode 工作区本身。然后,无论是自动,还是在单击“打开工作区”后,整个窗口都会重新启动,并且工作区实际上会打开。
\n请注意,我没有使用开发容器,我只是使用VSCode Remote SSH。
\n\n如何直接从 CLI 打开远程 VSCode 工作区而不重新加载整个窗口?
\n