[使用远程代理转发时的docker buildkit挂载ssh

问题描述 投票:0回答:2

我使用--ssh docker buildkit功能,它在本地运行良好。我想在远程服务器上构建Docker,为此,我使用-A标志转发本地github密钥,例如:

ssh -i "server.pem" -A <user>@<server-ip>

然后在服务器终端中运行:

ssh -T [email protected]

并且我收到“ Hello user”消息,这意味着密钥转发工作正常。(在服务器中,确实设置了$SSH_AUTH_SOCK,我可以git clone

现在,在本地构建时,我使用:

DOCKER_BUILDKIT=1 docker build --ssh default=~/.ssh/id_rsa -t myimage:latest .

哪个工作正常。但是在服务器中,私钥在〜/ .ssh / id_rsa不存在。那么如何将其转发到docker build?在服务器中尝试过:

DOCKER_BUILDKIT=1 docker build --ssh default=$SSH_AUTH_SOCK -t myimage:latest .

但是它不起作用。

Docker版本:19.03

docker ssh ssh-keys docker-build docker-buildkit
2个回答
0
投票

您的问题是您要指定私钥的显式路径。 ssh挂载支持将使用您的代理默认情况下,但是您已经告诉它不要这样做。请尝试:

DOCKER_BUILDKIT=1 docker build --ssh default -t myimage:latest .

我正在使用以下Dockerfile进行测试:

# syntax=docker/dockerfile:experimental

FROM alpine
RUN apk add --update git openssh
RUN mkdir -m 700 /root/.ssh; \
        printf "Host *\nStrictHostkeyChecking no" > /root/.ssh/config; \
        chmod 600 /root/.ssh/config
RUN --mount=type=ssh ssh [email protected]

如图所示,它应该显示ssh [email protected]行中的“成功”消息。


0
投票

您需要在计算机上运行ssh-agent并用ssh-add添加密钥,或者在登录时使用ssh -A -o AddKeysToAgent=true。如果设置-i,SSH将不会自动转发用-A指定的密钥。据我所知。登录后,您可以运行ssh-add -L以确保您的密钥已转发,并且如果您在那里看到记录,那么docker build --ssh default .现在应该可以正常工作。

eval `ssh-agent`
ssh-add server.pem
ssh -A <user>@<server-ip>
© www.soinside.com 2019 - 2024. All rights reserved.