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

Rundeck问题:Docker容器无法以指定用户SSH连接宿主机

问题解决:Rundeck Docker容器SSH宿主机时使用错误用户

核心原因

你遇到的问题是Rundeck执行SSH命令时,没有使用指定的目标用户,而是默认使用了容器内的rundeck用户,这通常是节点配置或执行器配置未正确指定SSH用户名导致的。

解决步骤

1. 确认节点定义中指定了目标SSH用户

无论是通过文件节点源还是GUI添加节点,必须明确设置节点的username属性:

  • 文件节点源示例(比如resources.yaml):
    nodes:
      - name: host.docker.internal
        hostname: host.docker.internal
        username: 你的宿主机目标用户名
        executor: ssh-exec
        ssh-key-storage-path: keys/your-target-user-key  # 关联密钥存储中的对应密钥
    
  • GUI添加节点:在节点创建页面的「Node Attributes」区域,添加username属性,值为你要登录的宿主机用户。

2. 检查项目级OpenSSH执行器配置

进入项目设置 → 节点执行器 → OpenSSH节点执行器,确保:

  • 「SSH Username」选项设置为${node.username}(读取节点定义的用户名),而非固定值。如果这里填了固定用户名,会覆盖节点级配置。
  • 「SSH Authentication」选择你在密钥存储中创建的对应凭证(密钥或密码)。

3. 验证容器内用户的SSH访问权限

虽然你用docker exec能成功连接,但要确认Rundeck运行的rundeck用户(容器内)能正确使用凭证访问目标用户:
执行以下命令测试:

docker exec -u rundeck rundeck3 ssh -i /var/lib/rundeck/.ssh/your-key-file 你的目标用户名@host.docker.internal whoami

如果返回目标用户名,说明凭证权限没问题;如果报错,检查密钥文件权限(需为600)或宿主机authorized_keys配置。

4. 调试实际执行的SSH命令

开启Rundeck调试日志,查看实际执行的SSH命令:

  • 进入容器编辑/etc/rundeck/rundeck-config.properties,添加:
    log4j.logger.org.rundeck.execution=DEBUG
    
  • 重启容器后,查看日志docker logs rundeck3,搜索SSH执行的命令,确认是否包含正确的用户名参数。

内容的提问来源于stack exchange,提问作者Steven Carlton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:23