在Docker中添加ssh密钥

在我的Dockefile中,我将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 

repo克隆成功,并从testBranch成功拉,当我运行这个docker使用docker run命令,并尝试任何git命令它说

 Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights 

但ssh密钥存在于/root/.ssh目录中

您的密钥是针对root用户( /root/.ssh/ )添加的。 我想当你运行docker run你切换到另一个用户(也许, docker )。

如果您将id_rsa.pub添加到正确的用户(运行docker run命令后的用户),那么它应该工作。

$ whoami向您显示当前用户。

您可以使用以下选项将主机的.ssh目录加载到docker中,而不是将密钥传递给args:

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