Oddamati
Oddamati

Reputation: 183

"Host key verification failed" on Gitlab_ci although ssh_key is present

"Host key verification failed." on Gitlab_ci when running "ssh name@server"

Here's a part of my gitlab_ci which is supposed to login to my server and run scripts from the repo:

script:
  - which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )
  - eval $(ssh-agent -s)
  - ssh-add <(echo -e "$SSH_PRIVATE_KEY")


  - echo "debug"
  - echo "$SSH_PRIVATE_KEY" # all is ok here, it'll be printed
  - echo "debug"


  # - here comes an error
  - (cat ./script/script1.sh) | ssh -t -t $SSH_USERNAME@$SSH_HOST

And the errror:

  Host key verification failed.
  ERROR: Job failed: exit code 1

Why the error? The variables are set.

The private key does work when I'm doing the same thing manually from my local computer and Gitlab.

Upvotes: 13

Views: 35778

Answers (2)

VonC
VonC

Reputation: 1323653

In addition of Git error: “Host Key Verification Failed” when connecting to remote repository, check your .known_hosts file.

If that same private key is working locally, that might be because, locally, your ~/.ssh/known_hosts file does include the ssh_keyscan of the remote server you want to connect to.
Make sure your GitLab CI job does too.

Upvotes: 13

Akumachan
Akumachan

Reputation: 129

I hit the same wall today and resolved it.
My solution is adding a -oStrictHostKeyChecking=no option to the ssh.

I found out this problem has been caused by ssh asking you the question below and this isn't supposed to appear in logs.

The authenticity of host 'xxx' can't be established.
ESDSA key fingerprint is xxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

The option -oStrictHostKeyChecking=no will suppress this so your ssh might work well.

I hope it will help people who have the same problem.

Upvotes: 4

Related Questions