如何在Rundeck作业中配置并读取密钥存储中的公钥与私钥?
在Rundeck作业中配置并使用公钥/私钥
我来帮你梳理下怎么解决这个问题——Rundeck里的公钥、私钥和密码的调用逻辑确实不一样,没法直接通过安全参数的下拉选择来用,得用特定的方式来配置,下面分场景给你说具体操作:
一、用于SSH节点认证(最常用场景)
如果你的私钥是用来连接远程SSH节点的,不需要在作业参数里折腾,直接配置到节点定义里就行:
- 进入项目设置 > 节点,找到目标节点的配置(或者通过节点源批量配置)
- 在节点属性里添加这行配置(替换成你自己的密钥路径):
这里的路径要严格和密钥存储页面显示的一致,比如密钥在ssh-key-storage-path=keys/path/to/your/private-keykeys/prod/ssh_server_private,就写这个完整路径 - 同时确保节点的
username属性设置正确,这样Rundeck会自动从密钥存储读取私钥完成SSH认证,不用你在作业里手动处理
二、在作业脚本/命令中直接调用密钥内容
如果需要在作业的脚本或命令里直接获取密钥内容,得用Rundeck的密钥引用语法:
- 在作业的脚本步骤里,用
${data.keys.xxx}的格式引用,比如你的私钥路径是keys/dev/my_rsa,就这么写:# 把私钥内容导出到临时文件 echo "${data.keys.dev.my_rsa}" > /tmp/private_key.pem # 必须设置正确权限,否则SSH会报错 chmod 600 /tmp/private_key.pem # 之后就可以用这个密钥做操作,比如SSH连接或者加密解密 ssh -i /tmp/private_key.pem user@remote-host "echo hello" - 如果想通过安全参数传递密钥,不能直接从下拉选,但可以手动把这个引用语法作为参数值,记得把参数标记为安全参数,这样内容会被加密隐藏
三、解决“无法读取密钥”的常见坑
你遇到的读取失败问题,大概率是这几个原因:
- 路径写错了:一定要带开头的
keys/,比如正确路径是keys/teamA/server_ssh,别漏写成teamA/server_ssh - 权限不够:检查执行作业的用户(或者项目的服务账号)有没有该密钥的读取权限,去密钥存储页面点密钥的权限设置,确保对应的角色/用户有
read权限 - 密钥带密码:如果你的私钥本身有加密密码,要么先去掉私钥的密码,要么在密钥存储里同时存密码,然后在节点配置里加
ssh-key-passphrase-storage-path=keys/path/to/your/key-passphrase
四、公钥的使用方法
公钥一般用来加密数据或者验证签名,用法和私钥类似:
- 在脚本里用
${data.keys.path.to.your.public-key}获取内容,比如:echo "${data.keys.dev/my_rsa.pub}" > /tmp/public_key.pub # 示例:用公钥加密文件 openssl rsautl -encrypt -pubin -inkey /tmp/public_key.pub -in plain.txt -out encrypted.txt
内容的提问来源于stack exchange,提问作者v01dv01d




