5

I'm currently trying to deploy my NodeJS API by dockerising it and put it onto an EC2, however I've head a dead end with this error: load pubkey "/root/.ssh/id_rsa": invalid format

Things I've tried

  • Converting my Private RSA Key from PSK1 to PSK8
  • Setting protected variable to false (and various combinations of the above)
  • Using apt-get install openssl-client and converting the Private RSA Key from within the docker (but apparently I'm missing apt-get so I've also tried apk which also didn't work so... ????)

Questionable:

  • The error mentions pubkey, but all tutorials have pointed to using my pem key which is generated from my EC2 setup. So perhaps I'm missing a pubkey? But I can't find any material saying otherwise.

gitlab-ci.yml

    image: docker:19.03.12
    variables:
      DOCKER_TLS_CERTDIR: "/certs"
      DOCKER_DRIVER: overlay2
    services:
      - docker:19.03.0-dind
    before_script:
      - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    stages:
      - build
      - deploy
    build:
      stage: build
      script:
        # - docker build --tag $CI_REGISTRY/$CI_PROJECT_PATH:latest . 
        # - docker push $CI_REGISTRY/$CI_PROJECT_PATH:latest
        - docker pull $CI_REGISTRY_IMAGE:latest || true
        - docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY/$CI_PROJECT_PATH:latest . 
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
        - docker push $CI_REGISTRY/$CI_PROJECT_PATH:latest
    deploy:
      stage: deploy
      only:
        - master
      script:
        ###### Login to deployment server using SSH #####
        - mkdir -p ~/.ssh
        - echo "$DEPLOY_SERVER_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
        - chmod 700 ~/.ssh/id_rsa
        - '[[ -f ./dockerenv ]] && echo -e "Host *\n\tStrickHostKeyChecking no\n\n" > ~/.ssh/config'
        - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
        - eval "$(ssh-agent -s)"
        - ssh-add ~/.ssh/id_rsa
        - ssh-keyscan -H $DEPLOYMENT_SERVER_IP >> ~/.ssh/known_hosts  
        ###### Pull the registry to deployment server and recereate the docker service #####    
        - ssh $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER_IP docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY 
        - ssh $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER_IP docker pull $CI_REGISTRY/$CI_PROJECT_PATH:latest
        - ssh $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER_IP docker run $CI_REGISTRY/$CI_PROJECT_PATH:latest

gitlab-runner config.toml

    [[runners]]
      name = "docker-runner"
      url = "https://gitlab.com/"
      token = "secretkey"
      executor = "docker"
      [runners.custom_build_dir]
      [runners.cache]
        [runners.cache.s3]
        [runners.cache.gcs]
      [runners.docker]
        tls_verify = false
        image = "docker:19.03.12"
        privileged = true
        disable_entrypoint_overwrite = false
        oom_kill_disable = false
        disable_cache = false
        volumes = ["/certs/client", "/cache"]
        shm_size = 0

CI runner output

    $ ssh $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER_IP docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    load pubkey "/root/.ssh/id_rsa": invalid format
    Login Succeeded
    $ ssh $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER_IP docker pull $CI_REGISTRY/$CI_PROJECT_PATH:latest
    load pubkey "/root/.ssh/id_rsa": invalid format
DV82XL
  • 5,350
  • 5
  • 30
  • 59
gyfchong
  • 79
  • 4

0 Answers0