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

如何通过cPanel生成的SSH密钥配置Bitbucket Pipeline对接cPanel服务器

Bitbucket Pipeline对接cPanel SSH部署配置方案

一、cPanel端前置配置

  • 登录cPanel后台,进入「安全」分类下的「SSH访问」页面
  • 点击「管理SSH密钥」,选择「生成新密钥」:
    • 密钥名称建议设为bitbucket_deploy,设置强密码(后续会用到)
    • 密钥类型选RSA,长度选2048或4096都可
  • 生成后找到刚生成的公钥bitbucket_deploy.pub,点击「管理授权」,确认已经设为已授权状态
  • 回到密钥列表,下载私钥bitbucket_deploy文件备用
  • 确认你的cPanel账户对/staging.example.net.au目录有读写执行权限,可在cPanel的「文件管理器」中右键目录查看权限,确保所属用户是你的cPanel账户,权限至少为755

二、Bitbucket端变量配置

进入你的Bitbucket仓库,依次打开「Repository settings」->「Repository variables」(建议设置为对应部署环境的专属变量,避免全局泄露),添加以下变量:

  • CPANEL_SSH_PRIVATE_KEY:值为你刚下载的私钥文件的全部内容,注意不要漏开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----
  • CPANEL_SSH_PASSPHRASE:值为你生成密钥时设置的密码(如果生成时没设密码就不用加这个变量)
  • CPANEL_USER:值为你的cPanel登录用户名,注意SSH默认会用当前容器的用户名连接cPanel,必须显式指定cPanel用户名才不会权限报错
  • CPANEL_HOST:值为你的服务器域名example.net.au
  • STAGING_PATH:值为/staging.example.net.au

三、权限报错原因说明

你之前执行ssh example.net.au ls -l /staging.example.net.au报错的核心原因是没有指定cPanel用户名,SSH默认用容器内的root用户去连接服务器,cPanel默认禁止root用户SSH登录,同时root用户也没有你这个站点目录的访问权限。

四、修改后的bitbucket-pipelines.yml配置

image: atlassian/default-image:2

pipelines:
  default:
    - parallel:
      - step:
          name: 'Build and Test'
          script:
            - echo "Your build and test goes here..."
      - step:
          name: 'Lint'
          script:
            - echo "Your linting goes here..."
      - step:
          name: 'Security scan'
          script:
            - echo "Your security scan goes here..."

    - step:
        name: 'Deployment to Staging'
        deployment: staging
        script:
          # 写入SSH私钥到容器
          - echo "$CPANEL_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
          - chmod 600 ~/.ssh/id_rsa
          # 配置跳过主机密钥校验,避免交互提示
          - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
          # 测试连通性
          - ssh $CPANEL_USER@$CPANEL_HOST ls -l $STAGING_PATH
          # 拉取代码、执行composer更新、数据库迁移
          - ssh $CPANEL_USER@$CPANEL_HOST "cd $STAGING_PATH && git pull origin main"
          - ssh $CPANEL_USER@$CPANEL_HOST "cd $STAGING_PATH && composer install --no-dev --optimize-autoloader"
          - ssh $CPANEL_USER@$CPANEL_HOST "cd $STAGING_PATH && php bin/console doctrine:migrations:migrate --no-interaction"
    - step:
        name: 'Deployment to Production'
        deployment: production
        trigger: 'manual'
        script:
          - echo "Your deployment to production script goes here..."

注意:如果你的代码仓库不是main分支,自行替换git pull后的分支名,Symfony控制台路径如果不是bin/console也对应修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 13:45:00