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

Git新手用Bitbucket Pipelines部署时遇私钥文件未保护警告

解决Bitbucket Pipelines中「WARNING: UNPROTECTED PRIVATE KEY FILE!」的问题

这个警告是SSH的安全机制在起作用——它要求私钥文件的权限必须严格限制为仅所有者可读可写(也就是权限值600),如果权限太开放(比如其他用户也能读取),就会弹出这个警告,甚至可能直接拒绝建立连接。针对Bitbucket Pipelines的场景,你可以按以下方式解决:

1. 直接修改私钥文件权限(适用于密钥已存在于构建环境中)

如果你的私钥是作为文件存在于代码库或者构建镜像里,在使用它之前先加一行修改权限的命令:

script:
  # 先调整私钥权限为600
  - chmod 600 ./path/to/your-private-key.pem
  # 然后执行你的部署命令,比如SSH连接远程服务器
  - ssh -i ./path/to/your-private-key.pem your-user@remote-server "your-deploy-script.sh"

2. 从Bitbucket变量读取密钥后调整权限(更安全的做法)

通常推荐把私钥存在Bitbucket的Repository Variables里(避免把密钥提交到代码库),这时候需要先把变量内容写入文件,再修改权限:

script:
  # 把变量中的私钥写入本地文件
  - echo "$SSH_PRIVATE_KEY" > ./deploy-key
  # 严格限制文件权限
  - chmod 600 ./deploy-key
  # 用这个密钥连接服务器部署
  - ssh -i ./deploy-key your-user@remote-server "git pull && restart-service"

3. 带密码的私钥:用ssh-agent管理

如果你的私钥设置了密码(passphrase),直接用上面的方法会卡在输入密码的步骤,这时候可以用ssh-agent来自动处理:

script:
  # 启动ssh-agent
  - eval $(ssh-agent -s)
  # 将私钥添加到agent(这里不需要手动改权限,ssh-add会自动处理安全权限)
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  # 直接连接服务器部署
  - ssh your-user@remote-server "your-deploy-commands"

额外提示

  • 本地生成私钥时,SSH默认会把权限设为600,不要手动修改成更开放的权限后再上传到Bitbucket变量。
  • 有些Docker镜像的默认umask设置可能会导致新创建的文件权限过宽,所以手动执行chmod 600是最稳妥的做法,不管环境如何都能保证权限符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:28:07