SSH 密钥转发
Posted
技术标签:
【中文标题】SSH 密钥转发【英文标题】:SSH Key Forwarding 【发布时间】:2019-10-09 23:18:49 【问题描述】:我正在尝试在构建 docker 映像时克隆一个私有 github 存储库。我安装了 docker 18.09.2,根据Build secrets and SSH forwarding in Docker 18.09
和Using SSH to access private data in builds
,我应该能够通过像这样设置我的 Dockerfile 来使用转发的 ssh 密钥:
# syntax=docker/dockerfile:experimental
FROM node:10.15.3
# Update and install any dependencies.
RUN apt-get update
RUN apt-get -y install openssh-client git
# Clone the private repository
RUN --mount=type=ssh git clone git@github.com:<USER>/<PRIVATE_REPO>.git
我已经使用ssh-add
添加了我的ssh密钥,并且在运行ssh-add -L
时成功列出。
为了构建容器,我使用以下命令:
docker build --ssh default .
我在尝试构建映像时仍然收到以下错误消息:
主机密钥验证失败。
我使用的 docker 客户端正在运行 macOS Mojave。
【问题讨论】:
虽然我没有回答您的问题,但请注意 "host key" 与您的 "ssh key" 不同.请参阅我关于 SSH Key Pairs 的文章以了解其中的区别。它可能会让你走上正轨。 @MartinPrikryl - 啊,这可能是问题所在。实际上,我可能必须在~/.ssh/known_hosts
中添加一个条目才能使其正常工作?
是的,这可能有效。它肯定适用于普通的ssh
。我不了解 Docker。
天哪,我太笨了。实际上,我有一个部分将 github.com 添加到 known_hosts
文件中,它不起作用的原因是因为我拼错了文件名,例如 RUN mkdir -p -m 0600 /root/.ssh && ssh-keyscan github.com >> /root/.ssh/know_hosts
。谢谢你帮助我=)
【参考方案1】:
正如上面 cmets 中指出的,host key
与 ssh key
不同,这不起作用的原因与我转发的 ssh 密钥无关,而是我需要将主机添加到 @ 987654323@:
RUN mkdir -p -m 0600 /root/.ssh && ssh-keyscan github.com >> /root/.ssh/known_hosts
【讨论】:
以上是关于SSH 密钥转发的主要内容,如果未能解决你的问题,请参考以下文章