Search code examples
sshbitbucketssh-keyscicdbitbucket-pipelines

Load key "/root/.ssh/pipelines_id": invalid format


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 ubuntu@13.235.33.118 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
ubuntu@13.235.33.118: 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?


Solution

  • 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