jenkins - Docker,如何处理 ssh key 、known_hosts 和 authorized_keys

标签 jenkins docker ssh configuration ansible

在 docker 中,当容器必须与外部系统通信时,如何根据配置 known_hosts、authorized_keys 和 ssh 连接的要求进行范围?

例如,我正在运行 jenkins 容器并尝试在作业中从 github checkout 项目,但连接失败并出现错误 host key verification failed

这可以通过登录容器来解决,手动连接到 github 并在出现提示时信任主机 key 。然而,这不是正确的解决方案,因为一切都需要 100% 自动化(我正在使用 ansible 和 docker 构建 CI 管道)。另一个(笨拙的)解决方案是为正在运行的容器提供 ansible,但这会使事情变得困惑且难以维护。 Jenkins 容器甚至没有 ssh 守护进程,我不确定如何从其他主机 ssh 进入容器。第三种选择是使用我自己的 Dockerfile 扩展 jenkins 镜像,其中配置了 ssh,但这将是硬编码并将容器锁定到这个特定环境。

那么,使用 docker 管理(和自动化)与外部系统的连接的正确方法是什么?

最佳答案

要信任 github.com 主机,您可以在启动或构建容器时发出此命令:

 ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts

这会将 github 公钥添加到您已知的主机文件中。

关于jenkins - Docker,如何处理 ssh key 、known_hosts 和 authorized_keys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40469380/

相关文章:

git - 连接到 Github 时为 "Cannot spawn ssh",但 ssh -T git@github.com 有效吗?

jenkins - 为什么 Groovy 的 powerassert 在 Jenkins 工作中不起作用

jenkins - 通过 java -jar jenkins.war --version 获取 Jenkins 版本,没有垃圾邮件输出

image - 如何将Docker镜像列表与API返回的标签列表相关联?

java - Jenkins SSH 步骤无效私钥

ssh - 如何允许一台服务器上的用户 "postgres"rsync 到另一台服务器?

Jenkins-pipeline 从 groovy 中的属性文件中提取并设置变量

java - Jenkins 拉取请求插件抛出 ArrayIndexOutOfBoundsException 异常

docker - 为什么我的 Docker swarm 服务仅复制到 3/5?

php - 在多个实例中运行 Laravel 作业