以下の内容はhttps://tekunabe.hatenablog.jp/entry/2026/01/14/ansible_libssh_ssh_configより取得しました。


[Ansible] network_cli で libssh を利用する場合 KexAlgorithms などを変数でも指定できる

はじめに

Ansible からネットワーク機器に ansible.netcommon.network_cli コネクションプラグイン)で接続するに、内部的に paramiko を利用するか libssh を利用するかを ssh_type オプションで選択できます。

このうち、 libssh を利用する場合(ansible.netcommon.libssh)、変数で指定できる SSH クライアントの設定(KexAlgorithms など)が増えてきています。たとえば、ansible.netcommon コレクションの 8.2.0 の CHANGELOG では、key_exchange_algorithms の設定項目ができた旨の記述があります。

~/ssh/config に指定すれば手動の ssh コマンドでも反映されて共通化できてこれはこれでよいですが、もし ~/ssh/config ではなく Ansible で閉じた世界(変数)で指定したい場合に便利です。

試したら確かにできたので、簡単ですが変数のサンプルを掲載します。

  • 検証環境
    • ansible-core 2.16.15
    • ansible-pylibssh 1.3.0
    • ansible.netcommon 8.2.0

変数による KexAlgorithms などの指定

例えば、Ansible からネットワーク機器に対して接続したときに以下のエラーになった場合、 ~/ssh/configKexAlgorithms を設定したりすると思います。

fatal: [ios01]: FAILED! => {"changed": false, "msg": "ssh connection failed: ssh connect failed: kex error : no match for method kex algos: server [diffie-hellman-group14-sha1], client [curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256]"}

この手の設定を ~/ssh/config ではなく、変数でも指定できるという話です(厳密には ansible.cfg環境変数でも)。

指定できる設定の一覧は ansible.netcommon.libssh のキュメントのパラメーター一覧で雰囲気がつかめます。

たとえば、 ~/ssh/config で以下の設定をする場合。

Host hogehoge
   KexAlgorithms diffie-hellman-group14-sha1
   HostKeyAlgorithms ssh-rsa
   PubkeyAcceptedKeyTypes ssh-rsa

変数だと以下のような指定になります。

---
ansible_libssh_hostkeys: ssh-rsa
ansible_libssh_key_exchange_algorithms: diffie-hellman-group14-sha1
ansible_libssh_publickey_algorithms: ssh-rsa

なお、上記の変数には含めていませんが、ansible_network_cli_ssh_type はデフォルトで auto です。ansible-pylibssh がインストールされていれば自動で libssh 扱いになります。逆に、ansible-pylibssh がインストールされていない場合は paramiko にフォールバックします(この場合は ansible_libssh_* 変数は利用できない)。

おわりに

~/ssh/config じゃない方法で設定を指定したい」というケースはあまり多くないかもしれませんが、いざというときに便利そうです。




以上の内容はhttps://tekunabe.hatenablog.jp/entry/2026/01/14/ansible_libssh_ssh_configより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14