【发布时间】:2021-10-27 08:39:23
【问题描述】:
我们已经建立了 Rundeck 社区,但对 SSH 执行有一些疑问。
据我所知,执行作业的用户似乎是在项目级别配置的,并且无法在每个级别的每个作业中更改它。
我们希望能够使用我们的 AD 凭据(当前有效)登录 Rundeck 并以我们的个人用户 ID 运行作业,这可能吗?
谢谢
【问题讨论】:
标签: rundeck
我们已经建立了 Rundeck 社区,但对 SSH 执行有一些疑问。
据我所知,执行作业的用户似乎是在项目级别配置的,并且无法在每个级别的每个作业中更改它。
我们希望能够使用我们的 AD 凭据(当前有效)登录 Rundeck 并以我们的个人用户 ID 运行作业,这可能吗?
谢谢
【问题讨论】:
标签: rundeck
可以在 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
【讨论】:
${job.username} 上下文变量从登录名(AD、LDAP 等)获取用户名,并从安全选项获取密码。当然,这意味着在远程主机上,这些用户必须使用各自的密码进行定义,才能通过 Rundeck 作业进行身份验证。
option.sshPassword1 选项的默认值。在示例中,用户必须手动键入密码,但您可以使用密钥存储中的默认值。或者创建一个动态的“密钥树”,例如 keys/${job.username}/password