You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rundeck v4.1.2 Docker部署SSH私钥认证节点连接失败求助

Rundeck 4.1.2 Docker部署节点SSH私钥认证失败排查

按优先级依次检查以下遗漏配置项,覆盖90%以上同场景报错:

  • 私钥格式不兼容
    Rundeck 4.1.x默认内置的JSch SSH组件不支持新版OpenSSH格式私钥(文件头为-----BEGIN OPENSSH PRIVATE KEY-----),仅兼容传统PEM格式RSA私钥(文件头为-----BEGIN RSA PRIVATE KEY-----)。本地命令行可正常连接是因为系统自带OpenSSH客户端同时兼容两种格式,JSch读取新格式私钥时会直接返回认证失败,不会明确报格式错误。
    修复方法:本地执行ssh-keygen -p -m PEM -f <你的私钥本地存储路径>将私钥转换为PEM格式,删除Key Storage中原有旧私钥,重新上传转换后的私钥到keys/test路径即可。
  • 节点配置属性名、枚举值写错
    你当前的节点配置中两个关键属性不符合SSH插件识别规则:
    1. 私钥存储路径属性名错误:插件不识别ssh-privateKey-storage-path,正确属性名为ssh-keypath
    2. 认证方式枚举值大小写错误:ssh-authentication的合法值为全小写的privatekey,大写K的privateKey无法被插件识别,会回退到默认认证逻辑
      修正后的节点配置参考:
    server18:
      nodename: server18
      hostname: server18.rc-group.local
      osVersion: 18.04
      osFamily: unix
      osArch: amd64
      description: target-test
      osName: Ubuntu
      username: rundeck
      ssh-authentication: privatekey
      ssh-keypath: keys/test
    
  • 容器内SSH主机指纹未信任
    你本地命令行连接时已经将目标节点的主机指纹存入本地known_hosts文件,但Rundeck运行在Docker容器中,容器内rundeck用户的~/.ssh/known_hosts默认是空的,JSch组件在未配置自动接受未知主机密钥时,会因主机指纹校验失败直接抛出通用认证失败报错,不会明确提示主机密钥不匹配。
    修复方法二选一:
    1. 测试环境可直接在项目配置文件project.properties中添加两行配置,关闭严格主机密钥校验:
      service.NodeExecutor.ssh-accept-unknown-hosts=true
      service.FileCopier.ssh-accept-unknown-hosts=true
      
    2. 生产环境建议进入运行中的Rundeck容器,切换到rundeck用户手动执行一次ssh rundeck@server18.rc-group.local,按提示接受目标节点主机指纹,注意要将容器内/home/rundeck/.ssh/known_hosts路径挂载到宿主机持久化,避免容器重建后配置丢失。
  • 容器内SSH相关文件权限不符合要求
    SSH客户端要求私钥、known_hosts等文件权限必须为600,且所属用户为当前执行用户,否则会直接拒绝读取文件导致认证失败。进入容器执行以下命令校验、修正权限即可:
    chmod 600 /home/rundeck/.ssh/*
    chown -R rundeck:rundeck /home/rundeck/.ssh/
    

内容的提问来源于stack exchange,提问作者GI D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:15:19