詹金斯管道里面的码头里面的Git不工作
我想在一个作为詹金斯管道的一部分运行的码头容器里面执行一些git查询。 在Docker容器的外面,sshsgent工作正常,我可以访问我的SCM没有问题。在容器内部,我得到了主机密钥验证问题。
任何人都可以帮我解决我犯的错误吗?詹金斯管道里面的码头里面的Git不工作
script { sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
{
sh("""
ssh -p 7999 [email protected] whoami
""")
}
docker.withRegistry('https://dockerhub.banana.com', 'banana-dockerhub-credential')
{
docker.image('banana_release_base').pull()
docker.image('banana_release_base').inside(
'''
-v /system:/system -v /tmp:/tmp --privileged -u 0
'''
)
{
sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
{
sh("""
echo $SSH_AUTH_SOCK
ssh -p 7999 [email protected] whoami
""")
}
}
}
}
首先WHOAMI呼叫输出:
[docker_git_test] Running shell script + ssh -p 7999 [email protected] whoami
d42967b44abe31d6
第二呼叫(和回声)在搬运工容器输出:
[docker_git_test] Running shell script + echo /tmp/ssh-dSoDZMggpAU1/agent.13
/tmp/ssh-dSoDZMggpAU1/agent.13
+ ssh -p 7999 [email protected] whoami
Host key verification failed
回答:
主机键验证失败
S容器中的SH连接无法验证主机的(bitbucket-eng-gpk1.com)身份,这是它失败的原因。当詹金斯提供一个容器时,它会试图限制外部世界的事物数量,比如环境变量和文件系统的位置,这些构建步骤会被隔离。在您的容器中,它在进行连接之前未接受VCS的主机密钥,并且它不是交互式终端,因此会失败。
有几种不同的方法来处理这个问题。下面是一些我能想到的把我的头顶部:
忽略主机密钥检查(明白这个(安全隐患1,2)) - 使用
StrictHostKeyChecking
选项来禁用检查。UserKnownHostsFile
选项可以在连接其他地方管理接受的键时使用。这也可以通过~/.ssh/config
文件中的每个主机完成。ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 7999 [email protected] whoami
建立SSH密钥进入多克尔图像(脆)
- 挂载
~/.ssh/config
文件到从与 - 主机的容器从主“安装”一些SSH配置文件,或者使用一些其他配置文件提供程序已将验证的主机密钥装入容器(可能使用Config File Provider Plugin)
回答:
只是为了显示我的工作。在mkobits的建议上,我在sh命令中添加了两行来编写解决问题的ssh配置文件。
sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519']) {
sh("""
echo $SSH_AUTH_SOCK
mkdir ~/.ssh
echo 'Host *\n StrictHostKeyChecking no' > ~/.ssh/config
ssh -p 7999 [email protected] whoami
""")
}
它可以内置到dockerfile中,但由于我使用共享映像,所以这种方式适合我的目的。
编辑:我已经加入到dockerfile如此,我们在这里:
RUN useradd -r -u 1000 builder COPY config /home/builder/.ssh/config
RUN chown builder:builder /home/builder/.ssh/*
USER builder
ENTRYPOINT ["/bin/bash"]
添加非root用户,这样文件不会留在工作区的根。 需要运行chown,并将添加的文件添加到作为所有者的根。 获取添加的配置文件是:
Host * StrictHostKeyChecking no
干杯!
以上是 詹金斯管道里面的码头里面的Git不工作 的全部内容, 来源链接: utcz.com/qa/264022.html