✨
JenkinsジョブでAnsibleの対象サーバにアクセスできない
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で認証鍵を作り直しましょう。
- 既存ホストから公開鍵を削除
$ ssh-keygen -R <ホスト名>
- 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$
- やっと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