You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab中作为文件变量的SSH Key无法使用,求解决方案

解决GitLab CI/CD文件变量id_rsa无法用于SSH的问题

问题原因

GitLab的文件变量并非直接提供文件路径,而是将文件内容作为变量值存储。直接在ssh命令中使用$id_rsa会把私钥文本(开头是-----BEGIN)当成文件名,导致ssh找不到对应文件,同时命令参数被打乱,出现解析hostname错误。

修正后的流水线配置

需要先将变量中的私钥内容写入临时文件,再赋予正确权限后供ssh使用:

my_job:
  script:
    # 将文件变量内容写入临时文件
    - echo "$id_rsa" > /tmp/id_rsa
    # 设置私钥文件权限(ssh要求必须是600,否则会拒绝使用)
    - chmod 600 /tmp/id_rsa
    # 使用临时文件作为身份文件执行ssh命令
    - ssh -o StrictHostKeyChecking=no -i /tmp/id_rsa my_host
    # 可选:清理临时文件
    - rm -f /tmp/id_rsa

额外注意事项

  • 确认在GitLab CI/CD变量配置时,id_rsa的类型是File,而非普通的Variable类型。
  • 如果该变量是受保护变量,则运行流水线的分支必须是GitLab中设置的受保护分支,否则变量不会被注入到流水线中。

内容的提问来源于stack exchange,提问作者Mikal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:55:37