JenkinsジョブでAnsibleの対象サーバにアクセスできない

2023/02/18に公開

JenkinsジョブでPlaybooksを実行する際、Ansibleの対象サーバにアクセスできず、「Host key verification failed」のエラーが出ます。認証鍵を作成・設定済みなのになぜですか?

TASK [Gathering Facts] *********************************************************
fatal: [192.168.191.135]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Host key verification failed.", "unreachable": true}

Jenkinsサーバ(Ansibleと同じサーバ)からリモートしてみて、問題なく接続できます。

[root@jenkins ~]# ssh root@192.168.191.135
Last login: Sat Feb 18 20:27:01 2023 from 192.168.191.133
[root@localhost ~]#

なぜかというと、Jenkins実行の際、jenkinsというユーザで実行してます。認証鍵は作成の際、rootユーザで作成したので、jenkinsユーザうまく利用できないです。(認証鍵の所有者&グループだけ変更しても、変わらないです。)
それでは、既存のホストから公開鍵を削除して、jenkinsで認証鍵を作り直しましょう。

  1. 既存ホストから公開鍵を削除
 $ ssh-keygen -R <ホスト名>
  1. rootからjenkinsユーザに切り替えの際、なんで切り替えできないです。
 [root@jenkins .ssh]# su - jenkins
最終ログイン: 2023/02/18 (土) 20:39:08 JST pts/0
[root@jenkins .ssh]#

エラーも出ないが、切り替えできないです。/etc/passwdを見てみましょう。
jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false
最後には、/bin/falseをshに変更します。

[root@jenkins .ssh]# which bash
/usr/bin/bash
[root@jenkins .ssh]# chsh jenkins -s /usr/bin/bash
[root@jenkins .ssh]# su - jenkins
-bash-4.2$
  1. やっとjenkinsユーザに切り替えしました。jenkinsユーザで認証鍵を作りましょう。
-bash-4.2$ ssh-keygen -t rsa
-bash-4.2$ ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root@192.168.191.135

設定変更後、再度ビルドしてみましょう。すると、正常に処理が完了します。

PLAY RECAP *********************************************************************
192.168.191.135            : ok=10   changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Discussion