LoginSignup
2
6

More than 5 years have passed since last update.

ansible_ssh_pass を指定すると公開鍵認証がオフになる件

Posted at

tl;dr

hostsgroup_vars などに ansible_ssh_pass を指定すると公開鍵認証でのsshがオフになるので、公開鍵認証したい場合はコメントアウトしましょう。

検証環境

  • ansible 1.8.1 (pip インストール)
  • Ubuntu 14.04

ansible 1.9でも同様の動作が発生する事が想定されます(その部分にソースコードに手が加わっていないため)

トラブル

いくつかのroleごとにユーザのパスワードを設定するplaybookを書いていた際に、sshのパスワードが変更される影響を考慮してhostsファイルに ansible_ssh_pass を記載していました。

$ cat hosts

[webserver]
web1.local
web2.local
web3.local

[webserver:vars]
vars_file=web.yml
ansible_sudo_pass=foobar
ansible_ssh_pass=foobar

サーバ自体には公開鍵認証でアクセス出来るのですが、パスワードも明示しておくか…という気持ちで登録しておくと、公開鍵認証でエラー。

普通にsshすると公開鍵認証に成功していたので、認証している鍵自体に問題は無さそうでした。

理由

ansible_ssh_pass を記載しているとパスワード以外の認証が無効化されるため。

該当コード
https://github.com/ansible/ansible/blob/release1.8.1/lib/ansible/runner/connection_plugins/ssh.py#L90-L92

ansibleによって生成されるsshコマンドのオプションの中に GSSAPIAuthentication=noPubkeyAuthentication=no が付与されるんですね。だから公開鍵認証も通らなかったようです。

まとめ

不要なパラメータはわざわざ書かないようにしましょう!

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6