如何通过CLI/REST将账号密码上传至Rundeck密钥存储替代密钥运行节点作业
实现Rundeck用户名密码认证执行节点作业的操作步骤
1 前置校验
确保目标节点的SSH服务已开启密码登录权限,即sshd配置中PasswordAuthentication参数为yes。
2 将用户名、密码上传至Rundeck密钥存储
你可以选择CLI或者REST接口两种方式上传,推荐将用户名、密码分别存储到密钥存储的独立路径,比如用户名存到keys/ssh/node-login-user,密码存到keys/ssh/node-login-pass。
2.1 通过CLI上传
首先确保你已安装Rundeck官方CLI工具rd,并提前配置好环境变量:
export RD_URL=http://你的Rundeck服务地址 export RD_TOKEN=你的Rundeck授权令牌 export RD_PROJECT=目标项目名
执行以下命令完成上传:
- 上传用户名
rd keys create --path keys/ssh/node-login-user --type password --content "你的节点登录用户名" - 上传密码
rd keys create --path keys/ssh/node-login-pass --type password --content "你的节点登录密码"
如果对应路径已存在密钥,可在命令末尾添加--force参数覆盖原有内容。
2.2 通过REST接口上传
直接调用Rundeck存储接口即可完成上传,通用curl示例如下:
- 上传用户名
curl -X POST \ "${RD_URL}/api/41/storage/keys/ssh/node-login-user" \ -H "X-Rundeck-Auth-Token: ${RD_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"content":"你的节点登录用户名","meta":{"Rundeck-content-type":"password"}}'
- 上传密码
curl -X POST \ "${RD_URL}/api/41/storage/keys/ssh/node-login-pass" \ -H "X-Rundeck-Auth-Token: ${RD_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"content":"你的节点登录密码","meta":{"Rundeck-content-type":"password"}}'
接口路径中的41为API版本号,可替换为你当前Rundeck版本对应的API版本。
3 配置节点使用密码认证
3.1 资源模型配置(推荐)
在项目的节点资源模型yaml文件中,给对应节点添加以下属性:
your-node-name: hostname: 节点IP地址 osFamily: linux node-executor: jsch-ssh file-copier: jsch-scp ssh-authentication: password username: ${keys/ssh/node-login-user} ssh-password-storage-path: keys/ssh/node-login-pass
配置完成后重新加载节点资源即可生效。
3.2 作业维度全局配置
如果仅需特定作业使用密码认证,无需修改节点配置,可以直接在作业编辑页的「节点设置」板块,将SSH认证方式修改为密码,再对应填写密钥存储路径即可。
4 验证
配置完成后运行测试作业,执行whoami等简单命令,确认节点可正常执行作业即可。
内容的提问来源于stack exchange,提问作者mmg
相关产品推荐
相关产品推荐

