我在Ubuntu上使用jenkins/jenkins:lts和jenkins/ssh slave映像运行jenkins master和slave作为docker容器。以下是步骤:
-
跑
ssh-keygen
在詹金斯主容器里(
docker exec -it container_id bash
)生成ssh密钥
-
使用dockerfile将生成的公钥添加到ssh从容器中的授权密钥文件中
-
在Jenkins凭证中添加了私钥
link
我在stackoverflow上查看了许多与此问题相关的问题,但我遇到了以下错误:
[02/08/19 20:31:06][SSH]打开到#######.###.#:22的SSH连接。
[02/08/19 20:31:06][SSH]SSH主机密钥与已知主机文件中的密钥匹配。允许连接。
错误:服务器拒绝了jenkins的1个私钥(credentialId:worker ssh/method:publickey)
[02/08/19 20:31:06][SSH]身份验证失败。
身份验证失败。
[02/08/19 20:31:06]启动失败-正在清理连接
[02/08/19 20:31:06][SSH]连接已关闭。
詹金斯的奴隶模板:
姓名
:詹金斯工人
用法
:尽可能使用此节点
发射方法
:通过SSH启动代理
主机名
:我的ip从ifconfig中提取
主机密钥验证开始
:已知主机文件验证策略(.ssh/known\u hosts包含所提供主机ip的条目)
ssh从机的Dockerfile
#Docker version 18.09.1
FROM jenkins/ssh-slave
COPY /.ssh/id_rsa.pub /.ssh/authorized_keys
RUN chmod 744 /.ssh/authorized_keys