Git 如何将ssh密码添加到Docker并在使用后将其删除?
这个问题听起来很简单,但我找不到一个安全而简单的解决办法 问题如下,我有一个项目,我想从私有git repos中提取依赖项来构建一个运行时环境,然后删除SSH密钥和SSH密码。我不能跳过密码短语,因为它是由git remote repos强制执行的Git 如何将ssh密码添加到Docker并在使用后将其删除?,git,docker,security,ssh,sshpass,Git,Docker,Security,Ssh,Sshpass,这个问题听起来很简单,但我找不到一个安全而简单的解决办法 问题如下,我有一个项目,我想从私有git repos中提取依赖项来构建一个运行时环境,然后删除SSH密钥和SSH密码。我不能跳过密码短语,因为它是由git remote repos强制执行的 我很难推送SSH密码短语,因此SSH不会要求密码短语 我很难理解如何安全地完成它 问题是我如何做到这一点,这样的方法也将是安全的 我在Docker中操作,可能会在其上安装任何开源软件。启用: docker构建有一个--ssh选项,允许docker引擎
ssh将您的私钥添加到ssh代理
从ssh添加man
页面:
如果任何文件需要密码短语,ssh add
要求用户提供密码短语
从ssh代理
man
页面:
其思想是代理在用户的本地PC、笔记本电脑或终端中运行。认证数据不需要存储在任何其他机器上,并且
身份验证密码短语永远不会通过网络传输。但是,到代理的连接是通过SSH远程登录转发的,用户可以
因此,请在网络中的任何位置使用身份赋予的权限
安全的方法
ssh代理将永远不会通过其请求通道发送私钥
文档中的示例Dockerfile
:
# syntax=docker/dockerfile:experimental
FROM alpine
# Install ssh client and git
RUN apk add --no-cache openssh-client git
# Download public key for github.com
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
# Clone private repository
RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
构建映像:docker Build--ssh default
我通常做的是删除密码短语,克隆repo,然后将密码短语放回原位。我想你已经说得很清楚了,你的遥控器已经强制使用了密码短语,所以你不能删除它然后克隆?我的理解正确吗?是的,这正是问题所在。它是强制的,所以我必须克服它。我也不能控制组织的策略,我倾向于在Docker空间之外运行所有git操作。这避免了在图像中插入密钥的问题以及泄漏密钥的可能性;它允许我构建任意分支或工作代码;而且它避免了Docker不会重复运行git clone的问题,Docker认为它是幂等的。@DavidMaze在我的情况下它不起作用,因为SSH连接是为了构建git中的项目依赖关系。这意味着我将需要构建一个具有所有外部依赖项的项目,但本地机器、云和CI/CD管道中的本机环境可能不同,因此在这种情况下,我根本不会使用Docker的功能。它对Docker的使用提出了疑问,Docker不是我在这个项目中可以放弃的东西。将Dockerfile
和其他工件放在存储库中<代码>git克隆…&&docker构建
。您仍然可以从一致的源代码树中获得一致的结果。有一点需要注意,在Windows中,默认值不起作用,因此您需要指定完整过程default=C:/.ssh/id\u rsa
(或您的id\u rsa
文件位置)