【问题标题】:Rundeck SSH ExecutionRundeck SSH 执行
【发布时间】:2021-10-27 08:39:23
【问题描述】:

我们已经建立了 Rundeck 社区,但对 SSH 执行有一些疑问。

据我所知,执行作业的用户似乎是在项目级别配置的,并且无法在每个级别的每个作业中更改它。

我们希望能够使用我们的 AD 凭据(当前有效)登录 Rundeck 并以我们的个人用户 ID 运行作业,这可能吗?

谢谢

【问题讨论】:

    标签: rundeck


    【解决方案1】:

    可以在 Rundeck 中使用作业级别的身份验证,并且可以将用户名用作 SSH 用户(当然 SSH 服务器必须配置该用户才能访问它)。

    我做了一个XML入口节点示例:

      <node name="node00" 
            description="Node 00" 
            tags="mytag" 
            hostname="192.168.33.20" 
            osArch="amd64" 
            osFamily="unix" 
            osName="Linux" 
            osVersion="3.10.0-1062.4.1.el7.x86_64"   
            username="${job.username}" 
            ssh-authentication="password" 
            ssh-password-option="option.sshPassword1"/>
    

    如果仔细检查,可以看到username属性设置为${job.username},这是一个获取当前用户名的上下文变量(来自、LDAP、AD或realm.properties文件),你可以看到所有Rundeck 上下文变量here

    本示例使用安全选项传递密码并实现 SSH 身份验证,该选项称为sshPassword1(参见ssh-password-option 属性)。

    现在是 YAML 格式的 job definition 示例:

    - defaultTab: nodes
      description: ''
      executionEnabled: true
      id: b188c66c-c057-4bb7-98bf-7c84632bc144
      loglevel: INFO
      name: Whoami
      nodeFilterEditable: false
      nodefilters:
        dispatch:
          excludePrecedence: true
          keepgoing: false
          rankOrder: ascending
          successOnEmptyNodeFilter: false
          threadcount: '1'
        filter: 'name: node00'
      nodesSelectedByDefault: true
      options:
      - name: sshPassword1
        secure: true
      plugins:
        ExecutionLifecycle: null
      scheduleEnabled: true
      sequence:
        commands:
        - exec: whoami
        keepgoing: false
        strategy: node-first
      uuid: b188c66c-c057-4bb7-98bf-7c84632bc144
    

    【讨论】:

    • 感谢您的详细回复,明确我们的 Rundeck 服务器位于 LDAP 中,但我们的其余部分尚未添加。所以我想要做的是使用我登录到 Rundeck 的用户名执行作业,但使用该特定用户名的每个远程主机的本地密码。这还有可能吗?
    • 当然,该示例显示了如何使用安全作业选项传递密码。我的意思是,节点定义使用${job.username} 上下文变量从登录名(AD、LDAP 等)获取用户名,并从安全选项获取密码。当然,这意味着在远程主机上,这些用户必须使用各自的密码进行定义,才能通过 Rundeck 作业进行身份验证。
    • 完美,我已经尝试过了,但我遇到了失败,我明天会进一步研究它,因为它可能与容器配置相关。你给了我一些很好的信息,所以感谢你的帮助!
    • 所以看起来默认使用在项目级别设置的keys/user1密码存储路径,节点declamation xml中的option.sshPassword1提示输入密码,但这从未使用过.有什么想法吗?
    • 您可以使用密钥存储中的任何密码设置option.sshPassword1 选项的默认值。在示例中,用户必须手动键入密码,但您可以使用密钥存储中的默认值。或者创建一个动态的“密钥树”,例如 keys/${job.username}/password
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    相关资源
    最近更新 更多