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 missingapt-get
so I've also triedapk
which also didn't work so... ????)
Questionable:
- The error mentions
pubkey
, but all tutorials have pointed to using mypem
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