【Ansible Tower/AWX】認証情報のSSH秘密鍵の使い方


この記事はプロモーションを含みます。

Ansible

ホーム > Ansible Tower・AWX リファレンス

Ansible AWX・Towerで、認証情報に「SSH秘密鍵」を登録する方法を解説します。

はじめに

Linux系OSのターゲットノードに接続する際の認証方式として、
パスワード認証に加えて、秘密鍵を用いた認証方式が必要となる場合があります。

秘密鍵認証が必要な環境として、よくあるのが、Vagrantを使用して構築した環境です。
Boxファイルにもよりますが、パスワード認証方式で接続しようとしても弾かれる場合が多々あります。
Vagrantに興味がある方は、以下を参考にしてみて下さい。

今回は、秘密鍵を使用して、Linux環境に接続する方法を説明します。
合わせて、秘密鍵が必要なターゲットノードに対し、
パスワード認証と鍵認証の両方で接続した場合の挙動についても確認してみたいと思います。

秘密鍵の登録手順

ここでは、認証情報の新規作成から、秘密鍵を登録する手順を説明します。

まず、認証情報一覧画面に移動し、「新規認証情報の作成」ボタン (緑色の+マーク) をクリックします。

認証情報の作成画面では、以下のように設定します。
今回は、Vagrantで作成した環境に接続するため、認証情報タイプは「マシン」、ユーザーは「vagrant」としています(vagrantの初期ユーザー・パスワードについてはこちら
*赤字部分が必須入力項目となります。

  • 名前:Vagrant SSH
  • 説明:Vagrant SSH秘密鍵あり
  • 認証情報タイプ:マシン
  • ユーザー名:vagrant
  • パスワード:ユーザー名に対応したパスワード

パスワード認証の場合は、ここまでの設定で接続出来るようになりますが、
秘密鍵認証を行うには、追加で「SSH 秘密鍵」を設定する必要があります。

設定方法は、認証情報の作成画面にある「SSH 秘密鍵」フィールドに、認証に使用する秘密鍵の内容を入力します。
*秘密鍵のファイルをドラッグアンドドロップすることで、ファイルの内容を自動的に読み込むことも可能です。

Vagrant環境の場合、Vagrantインストール時に作成される「insecure_private_key」の内容を記述すればOKです。

設定後は、認証情報の作成画面の右下にある「保存」ボタンをクリックします。
認証情報の作成は以上となります。

では、作成した認証情報を使用して、正しく接続出来るか確認をしていきます。

動作確認

ここでは、秘密鍵を使用した認証情報で正しく接続出来るかの動作確認を行います。
接続に秘密鍵が必要な環境に対して、秘密鍵の設定あり・なしの2パターンを試してみたいと思います。

テスト環境は、Vagrantで作成した環境を使用します。
また、認証情報以外のAWXの設定については、ここでは割愛するので、以下を参考にして下さい。

また、テストに使用するプレイブックは、pingのみを実行する以下を使用します。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: 疎通確認
    ping:

秘密鍵あり

ここでは、秘密鍵を使用して接続してみます。

以下は、AWXジョブ実行時のログです。
実行結果が「ok=1」となり、実行に成功していることが分かります。

Identity added: /tmp/awx_18_vchtf2_p/artifacts/18/ssh_key_data (/tmp/awx_18_vchtf2_p/artifacts/18/ssh_key_data)
Using /etc/ansible/ansible.cfg as config file
SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [疎通確認] ********************************************************************
ok: [VMwareTest06] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

PLAY RECAP *********************************************************************
VMwareTest06               : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

秘密鍵なし

ここでは、秘密鍵を使用せずに接続してみます。

以下は、AWXジョブ実行時のログです。
実行結果が「unreachable=1」となり、実行に失敗しました。

Using /etc/ansible/ansible.cfg as config file
SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [疎通確認] ********************************************************************
fatal: [VMwareTest06]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: vagrant@192.168.254.200: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true}

PLAY RECAP *********************************************************************
VMwareTest06               : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0

エラーを確認すると、SSHの認証に失敗したことが分かります。

エラー部分を抜粋しました。

fatal: [VMwareTest06]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: vagrant@192.168.254.200: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true}

記事は以上です。今回は、Ansible AWX・Towerで、SSHの秘密鍵認証を使用して、機器に接続する方法を解説しました。パスワード認証が通らない場合などに、本記事を参考にして試してみて下さい。

コメント

タイトルとURLをコピーしました