Gitlab CI - SSH Permission denied (publickey,password)

You need to add the public key to the server so it would be recognized as an authentication key. This is, paste the content of the public key corresponding to the private key you are using to the ~/.ssh/authorized_keys on the $PRODUCTION_SERVER.


This is the script that worked to me:

before_script:
                - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
                - mkdir -p ~/.ssh
                - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
                - chmod 700 ~/.ssh/id_rsa
                - eval "$(ssh-agent -s)"
                - ssh-add ~/.ssh/id_rsa
                - ssh-keyscan -t rsa 64.227.1.160 > ~/.ssh/known_hosts
                - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
                - chmod 644 ~/.ssh/known_hosts

And I had to unprotect the variable as well.

Gitlab pipelines ssh key


The following can be used alternatively

some_stage:
        - eval $(ssh-agent -s)
        - cd ~
        - touch id.rsa
        - echo "$SSH_PRIVATE_KEY" > id.rsa
        - chmod 700 id.rsa
        - ssh -o StrictHostKeyChecking=no -i id.rsa $SSH_USER@$SERVER

Tags:

Ssh

Gitlab Ci