Tom*_*han 9 visual-studio-code vscode-devcontainer
我正在阅读这些有关与开发容器共享 SSH 密钥的文档,但我无法让它工作。
\n我的设置如下:
\n使用 WSL2 后端的 Windows 10 和 Docker Desktop 4.2.0
\n运行 Ubuntu 20.04 的 WSL2 发行版
\n在 WSL2 中,我已经ssh-agent
运行并知道我的密钥:
\xce\xbb ssh-add -l\n4096 SHA256:wDqVYQshQBCG/Sri/bsgjEaUFboQDUO/9FJqhFMncdk /home/taschan/.ssh/id_rsa (RSA)\n
Run Code Online (Sandbox Code Playgroud)\n文档说
\n\n\n如果本地 SSH 代理正在运行,该扩展将自动转发
\n
但如果我ssh-add -l
在 devcontainer 中这样做,它会响应Could not open a connection to your authentication agent.
; 当然,启动一个(使用eval "$(ssh-agent -s)"
)只会启动一个不知道我的私钥的启动。
我缺少什么?
\n小智 8
我基本上有同样的问题。使用 WSL2 运行 Windows 11 和我的 VSCode Devcontainer 不会显示任何 ssh 密钥(ssh-add -l
在容器内运行显示空列表),尽管在我的主机上使用有效的 ssh 密钥配置了 Git。
ssh-agent
对我来说,我的机器上有 3 个独立的实例:
我现有的 ssh 密钥是在 Git Bash 内部设置的(按照 Github 的说明),因此运行时ssh-add -l
只会从 Git Bash 终端内部显示我的 ssh 密钥,而不会在其他地方显示。
然而,正如前面的答案中所解释的,深入研究 Devcontainer 启动日志表明 VSCode 仅转发主机的ssh-agent
,它不会查看 WSL2 或 Git Bash 的。
解决方案:我建议遵循以下 Microsoft 文档页面。您需要在 Windows 中启用“可选功能”,然后在 PowerShell 中(以管理员身份)运行一些命令来激活该ssh-agent
服务。通过此设置,ssh-agent
/ssh-add
命令也可以在常规 CMD 终端上运行。您可以将它们与常用的 keygen 命令等一起使用,以在主机上生成和添加新密钥(我刚刚ssh-add
编辑了最初由 Git Bash 生成的相同密钥)。添加的密钥应立即被ssh-add -l
容器内部检测到。
https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
共享凭据的另一种方法是除了devcontainer.json
主代码目录之外,还将 SSH 目录安装在 中。就像这样:
"mounts": [
"type=bind,source=${localWorkspaceFolder},target=/work",
"type=bind,source=/home/${localEnv:USER}/.ssh,target=/root/.ssh,readonly"
]
Run Code Online (Sandbox Code Playgroud)
请注意,那么您也不需要workspaceMount
字段。
更多信息:
https://code.visualstudio.com/remote/advancedcontainers/add-local-file-mount
https://docs.docker.com/storage/bind-mounts/
小智 1
为了让它发挥作用,我也遇到了很多麻烦。以下步骤可能有助于故障排除:
检查它ssh-agent
正在您的主机上运行并且密钥已添加
在 Windows 上运行ssh-agent -l
并期望看到您的密钥的名称
检查 VSCode 是否转发套接字
ssh-agent
在启动日志中搜索。我收到了消息
ssh-agent: SSH_AUTH_SOCK in container (/tmp/vscode-ssh-auth-a56c4b60c939c778f2998dee2a6bbe12285db2ad.sock) forwarded to local host (\\.\pipe\openssh-ssh-agent).
Run Code Online (Sandbox Code Playgroud)
因此,VSCode 似乎在这里直接转发 Windows SSH 代理(而不是在 WSL 中运行的 SSH 代理)。
归档时间: |
|
查看次数: |
10361 次 |
最近记录: |