在Docker中添加SSH密钥

6
在我的Dockerfile中,我正在将SSH密钥添加到Docker并从Bitbucket克隆项目。 我可以轻松地在Docker文件中拉取另一个分支。
ARG key
ARG pub_key
RUN mkdir /root/.ssh/
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
ADD $key /root/.ssh/
ADD $pub_key /root/.ssh/
RUN git clone git@bitbucket.org:******************/sql.git
WORKDIR "/sql"
RUN git pull origin testBranch

仓库已成功克隆,并且成功地从testBranch执行了拉取操作。当我使用docker run命令运行此Docker并尝试任何git命令时,它会显示以下消息。

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

但是ssh密钥存在于目录/root/.ssh中。
2个回答

2
你的密钥已添加到 root 用户(/root/.ssh/)。我猜当你运行docker run时,你正在切换到另一个用户(可能是docker)。
如果你将id_rsa.pub添加到正确的用户(在运行docker run命令后的用户),那么它应该可以工作了。 $ whoami可以显示当前用户。

1

除了将密钥作为参数传递外,您还可以使用以下选项将主机的 .ssh 目录挂载到 Docker 中:

docker run -v /home/<host user>/.ssh:/home/<docker user>/.ssh <image>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接