Git克隆docker容器中的私有回购



我有一个docker容器,在这个docker容器中我有一段shell脚本,它从私有repo执行git克隆。脚本如下:

eval $(ssh-agent) > /dev/null
# add the ssh key
ssh-add /root/.ssh/id_rsa
kill $SSH_AGENT_PID
git clone ssh://git@bitbucket.org/project/repo.git 

但当docker运行时,它会给出一个错误

Cloning into 'repo'...
Host key verification failed.
fatal: Could not read from remote repository.

当我在本地机器上测试时,我可以克隆repo而不会失败,所以我知道我的ssh密钥没有问题。

问题是,当您在本地机器上进行这样的设置时,您可以访问SSH的终端,将密钥添加到known_hosts请求

The authenticity of host 'server-name (***)' can't be established.
RSA key fingerprint is XXXXXXX.
Are you sure you want to continue connecting (yes/no)?

您基本上可以进行交互,并键入yes和ssh代理为您添加到known_hosts的连接。然而,在这种情况下,事情发生在docker容器内,您基本上无法插入此提示。解决方案是将StrictHostKeyChecking no标志添加到ssh-config中,对于git命令有几种方法可以做到这一点,您可以在这里查看它们。

因此,基本上,以下是解决这个问题的优雅方法,只需制作.ssh/config文件并添加我们想要的ssh选项。

eval $(ssh-agent) > /dev/null
# add the ssh key
ssh-add /root/.ssh/id_rsa
kill $SSH_AGENT_PID
echo "Host bitbucket.org" > /root/.ssh/config
echo "User git" >> /root/.ssh/config
echo "IdentityFile /root/.ssh/id_rsa" >> /root/.ssh/config
echo "StrictHostKeyChecking no" >> /root/.ssh/config
git clone ssh://git@bitbucket.org/project/repo.git 

StrictHostKeyChecking no选项只是放弃提示,直接将连接添加到known_hosts,基本上之后可以git clone

相关内容

  • 没有找到相关文章

最新更新