Dockerfile `RUN --mount=type=ssh` 似乎不起作用

WZH*_*WZH 6 docker dockerfile

在我的 Dockerfile 中,我尝试从私有存储库中提取 Python 库:

RUN --mount=type=ssh .venv/bin/pip install SOME_LIB --extra-index-url https://example.com/pypi/ -U
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用以下命令运行构建:

docker buildx build --ssh /path/to/the/private/key/id_rsa .
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它给了我以下错误:

#0 0.831   Host key verification failed.
#0 0.831   fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

我已经仔细检查过私钥是否正确。我错过了任何使用步骤--mount=type=ssh吗?

lar*_*sks 12

该错误与您的私钥无关;这是“主机密钥验证失败”。这意味着ssh无法识别远程主机提供的密钥。它的默认行为是询问是否应该信任主机密钥,并且当在无法交互提示的环境中运行时,它将简单地拒绝该密钥。

您有几种选择来处理这个问题。在以下示例中,我将克隆 GitHub 私有存储库(因此我与 github.com 交互),但对于使用 ssh 连接的任何其他主机,该过程都是相同的。

所有这三个解决方案都将确保 ssh 信任远程主机密钥。第一个选项是最安全的(已知的主机文件只会在ssh-keyscan本地运行时由您显式更新)。最后一个选项可能是最方便的。