skip to Main Content

I am using bitbucket pipeline to deploy app on a ec2-server.

here is my bitbucket-pipelines.yaml file

image: atlassian/default-image:3

pipelines:
  branches:
    dev:
      - step:
          name: automated deployment
          script:
            - pipe: atlassian/scp-deploy:1.2.1
              variables:
                USER: 'ubuntu'
                SERVER: $SERVER_IP
                REMOTE_PATH: '/home/ubuntu/utags-test/server'
                LOCAL_PATH: '${BITBUCKET_CLONE_DIR}/*' 
            - pipe: atlassian/ssh-run:0.4.1
              variables:
                SSH_USER: 'ubuntu'
                SERVER: $SERVER_IP
                COMMAND: 'cd /home/ubuntu/utags-test/server;docker pull paranjay1/utags-paranjay:dev;docker-compose down;docker-compose up -d'
                SSH_KEY: $SERVER_PRIVATE_KEY 
                DEBUG: 'true'
          services:
            - docker   

error while running pipeline

Build setup13s

pipe: atlassian/scp-deploy:1.2.1
....
....
Digest: sha256:b9111f61b5824ca7ed1cb63689a6da55ca6d6e8985eb778c36a5dfc2ffe776a8
Status: Downloaded newer image for bitbucketpipelines/scp-deploy:1.2.1
INFO: Configuring ssh with default ssh key.
INFO: Adding known hosts...
INFO: Appending to ssh config file private key path
INFO: Applied file permissions to ssh directory.
✔ Deployment finished.

pipe: atlassian/ssh-run:0.4.1
....
....
Digest: sha256:b8ff5416420ef659869bf1ea6e95502b8fa28ccd5e51321e4832d9d81fdefc18
Status: Downloaded newer image for bitbucketpipelines/ssh-run:0.4.1
INFO: Executing the pipe...
INFO: Using passed SSH_KEY
INFO: Executing command on 13.235.33.118
ssh -A -tt -i /root/.ssh/pipelines_id -o StrictHostKeyChecking=no -p 22 [email protected] bash -c 'cd /utags-test/server;docker pull paranjay1/utags-paranjay:dev;docker-compose down;docker-compose up -d'
Load key "/root/.ssh/pipelines_id": invalid format
Load key "/root/.ssh/pipelines_id": invalid format
[email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
✖ Execution failed.
  • I already installed docker and docker-compose on my ec2-server
  • I generated the keys on bitbucket in sshkey section and added bitbucket public key to my authorized_keys file on ec2-server
  • $SERVER_PRIVATE_KEY contains the ec2-server private key
  • $SERVER_IP contains my ec2-server public IP

HOW CAN I SOLVE THIS ISSUE and what might be the cause of this error?

3

Answers


  1. Chosen as BEST ANSWER

    you actually don't need to use "SSH_KEY: $SERVER_PRIVATE_KEY" in your pipe. you can use the default keys available in your bitbucket_repo > repository_settings > ssh_key. you can generate a key here. the generated public key should be in the remote server's "/home/ubuntu/.ssh/authorized_key" file. add your remote servers public-IP to the known host and fetch fingerprint.

    but if you want to use a different ssh key then you have to add "SSH_KEY: $SERVER_PRIVATE_KEY" in your pipe. where,

    $SERVER_PRIVATE_KEY - local machine's private_IP encoded to base64

    you have to use $base64 -w 0 < my_ssh_key command to encode your key to base64


  2. atlassian/ssh-run pipe documentation states the alternative SSH_KEY should be base64 encoded. My bet is you missed that info bit.

    An base64 encoded alternate SSH_KEY to use instead of the key configured in the Bitbucket Pipelines admin screens (which is used by default). This should be encoded as per the instructions given in the docs for using multiple ssh keys.

    Another good question would be: why aren’t you using the ssh key provided by the pipeline instead?

    Login or Signup to reply.
  3. You can use repository SSH key, so you won’t need to encode it.

    bitbucket.com/…/admin/addon/admin/pipelines/ssh-keys

    Then remove SSH key variable and it defaultly uses repository ssh key.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search