You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Rundeck作业中配置并读取密钥存储中的公钥与私钥?

在Rundeck作业中配置并使用公钥/私钥

我来帮你梳理下怎么解决这个问题——Rundeck里的公钥、私钥和密码的调用逻辑确实不一样,没法直接通过安全参数的下拉选择来用,得用特定的方式来配置,下面分场景给你说具体操作:

一、用于SSH节点认证(最常用场景)

如果你的私钥是用来连接远程SSH节点的,不需要在作业参数里折腾,直接配置到节点定义里就行:

  • 进入项目设置 > 节点,找到目标节点的配置(或者通过节点源批量配置)
  • 在节点属性里添加这行配置(替换成你自己的密钥路径):
    ssh-key-storage-path=keys/path/to/your/private-key
    
    这里的路径要严格和密钥存储页面显示的一致,比如密钥在keys/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

火山引擎 最新活动