t2d.ssh_known_hosts
sshknownhostsrole
これは、通常/etc/ssh/ssh_known_hostsまたは~user/.ssh/known_hostsにあるSSHのknown hostsファイルを管理するためのAnsibleロールです。
このロールの主な目的は、https://github.com/bfmartin/ansible-sshknownhosts にあるsshhknownhostsモジュールをラップし、Ansible Galaxyに適したものにすることです。
要件
OpenSSHサーバーがインストールされたUnix系のシステムで動作します。
セキュリティ
ssh_known_hostsファイルがssh-keyscanを使用してキーを検証せずに作成された場合、ユーザーは中間者攻撃に対して脆弱になります。一方、セキュリティモデルがそのリスクを許容する場合、ssh-keyscanは改ざんされたキーや中間者攻撃の検出に役立ちます。これは、ssh_known_hostsファイルが作成された後に発生した場合です。
(ssh-keyscanのマニュアルページから)
そのため、fingerprint属性を提供して手動でフィンガープリントを指定できます。
ロール変数
このロールは次の変数を使用し、デフォルト値があります:
ssh_known_hosts_path: 書き込む先のファイル。デフォルトは/etc/ssh/ssh_known_hostsで、~user/.ssh/known_hostsも良い代替手段です。
ssh_known_hosts_state: present(存在する)またはabsent(存在しない)。デフォルトはpresent。
ssh_known_hosts_enctype: スキャン対象の公開鍵エンコーディングタイプ。選択肢はrsa、dsa、ecdsa、またはed25519。デフォルトはrsaです。
ssh_known_hosts_port: リモートホストをスキャンする際に接続するポート。デフォルトは22です。
ssh_known_hosts_keyscan: スキャンに使用するプログラム。デフォルトは現在のパスのssh-keyscanです。
ssh_known_hosts: スキャン対象のホストとその属性の辞書のリスト:
ssh_known_hosts:
  - name: example.com
    state: present
    dest: /etc/ssh/ssh_known_hosts
    enctype: rsa
    port: 22
    keyscan: ssh-keyscan
    aliases:
      - www.example.com
      - www2.example.com
依存関係
なし。
使用例のプレイブック
- hosts: all
  vars:
    ssh_known_hosts:
      - name: example.com
        state: present
        dest: /etc/ssh/ssh_known_hosts
        enctype: rsa
        port: 22
        keyscan: ssh-keyscan
        aliases:
          - www.example.com
          - www2.example.com
      - name: srv.example.com
        fingerprint: AAAAE2VjZHNhLXNoYTItbmlzdHAyN...
  roles:
    - role: sshknownhosts
ライセンス
BSD
著者情報
バイロン・F・マーティン
メール: http://www.bfmartin.ca/contact
GitHub: bfmartin
