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

GitLab CI/CD执行chmod og= $STAGE_ID_RSA报exit code 1错误

报错根因
  • 最核心的问题是变量用法错误:配置的STAGE_ID_RSA变量存储的是SSH私钥的原始文本内容,不是流水线容器内私钥文件的路径。执行chmod og= $STAGE_ID_RSA时,shell会把变量替换为完整的多行私钥文本,chmod会将这些文本逐行识别为待修改权限的文件路径,自然找不到对应目标,直接触发参数错误,输出chmod命令的使用说明后以exit code 1退出。
  • 配置文件还存在两个隐藏问题:一是内容里混入了HTML转义字符(&、"),二是最后docker run命令中存在双引号嵌套冲突,就算修复chmod问题,后续步骤也会执行失败。
修复步骤
  1. 不要直接把私钥内容传给chmod/ssh命令,先将私钥内容写入流水线容器内的本地文件,再对该文件设置权限,ssh连接时指定这个本地文件的路径即可。
  2. 修正配置中的转义字符、引号嵌套问题。

修正后的可直接使用的配置如下:

deploy-stage:
  stage: deploy
  image: alpine:latest
  script:
    # 创建ssh目录,将私钥变量内容写入本地文件
    - mkdir -p ~/.ssh
    - echo "$STAGE_ID_RSA" > ~/.ssh/id_rsa
    # 给私钥文件设置符合SSH要求的600权限(权限过宽会被SSH拒绝连接)
    - chmod 600 ~/.ssh/id_rsa
    # 安装SSH客户端,加--no-cache避免不必要的缓存,提升执行速度
    - apk update && apk add --no-cache openssh-client
    # 所有SSH命令统一指定本地私钥路径,关闭主机密钥校验
    - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker stop $CI_PROJECT_NAME || true"
    - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker rm $CI_PROJECT_NAME || true"
    - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker image rm $CI_REGISTRY_IMAGE:latest || true"
    - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
    - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker pull $CI_REGISTRY_IMAGE:latest"
    # 内部环境变量参数用单引号包裹,避免和外层双引号冲突导致命令截断
    - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker run -d --restart unless-stopped --name $CI_PROJECT_NAME -p 8882:4000 -e 'variableData=Docker-Run-Command' $CI_REGISTRY_IMAGE:latest"
补充说明
  • 私钥变量值末尾保留换行符的操作是正确的,不需要调整,否则SSH识别私钥时可能报错。
  • 如果把STAGE_ID_RSA变量类型设置为GitLab CI的File类型,GitLab会自动将变量内容写入临时文件,此时变量值存储的是临时文件路径,原有chmod逻辑可以正常运行,但手动写入文件的方式不受变量类型影响,兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:24:24