为什么我在设置 ssh-slave Docker 镜像时收到错误“服务器拒绝了 1 个私钥”

为什么我在设置 ssh-slave Docker 镜像时收到错误“服务器拒绝了 1 个私钥”

我在 Ubuntu 上使用 jenkins/jenkins:lts 和 jenkins/ssh-slave 镜像将 Jenkins 主服务器和从服务器作为 Docker 容器运行。步骤如下:

  • ssh-keygen在 jenkins-master 容器内运行( docker exec -it container_id bash)以生成 ssh 密钥
  • 使用 dockerfile 将生成的公钥添加到 ssh-slave 容器内的 authorized_keys 文件中
  • 按照此操作在 Jenkins 凭证中添加私钥关联

我在 Stack Overflow 上查看了许多与此问题相关的问题,但仍然遇到以下错误:

[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] 连接已关闭。

Jenkins中的从属模板:

姓名:詹金斯工人

用法:尽可能使用此节点

发射方法:通过 SSH 启动代理

主机名:从 ifconfig 中提取的我的 ip

主机密钥验证策略:已知主机文件验证策略(.ssh/known_hosts包含所提供主机 IP 的条目)

ssh-slave 的 Dockerfile

    #Docker version 18.09.1
    FROM jenkins/ssh-slave
    COPY /.ssh/id_rsa.pub /.ssh/authorized_keys
    RUN chmod 744 /.ssh/authorized_keys

答案1

chmod 744 on .ssh/authorized_keys我认为这很糟糕。如果权限太开放,ssh 将不会使用文件中的密钥。

更改权限为600。rw-------

   permissions of 744 == rwxr-xr-x   ==  read permissions for world and group

   permissions of 600 == rw-------   ==  read/write permissions for owner user only

相关内容