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.09Using 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 &amp;&amp; ssh-keyscan github.com &gt;&gt; /root/.ssh/know_hosts。谢谢你帮助我=) 【参考方案1】:

正如上面 cmets 中指出的,host keyssh key 不同,这不起作用的原因与我转发的 ssh 密钥无关,而是我需要将主机添加到 @ 987654323@:

RUN mkdir -p -m 0600 /root/.ssh && ssh-keyscan github.com >> /root/.ssh/known_hosts 

【讨论】:

以上是关于SSH 密钥转发的主要内容,如果未能解决你的问题,请参考以下文章

ssh配置及端口转发

ssh验证和端口转发

如何通过“vagrant ssh”使用 ssh 代理转发?

SSH 代理转发不起作用

python 3 paramiko ssh代理在第三台主机上使用远程命令转发跳转主机

ssh转发