web-dev-qa-db-ja.com

Ansibleは、PreferredAuthenticationsのSSH設定はどこから来るのですか?

SSHユーザー名とパスワード設定を使用して、標準のansible(v2.3.1)プレイブックを実行しています。 「-vvvv」設定を使用すると、これらのSSHコマンドが生成されるのを確認できます

EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
-o StrictHostKeyChecking=no -o Port=2222 
-o KbdInteractiveAuthentication=no 
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
-o PasswordAuthentication=no -o User=dc_user -o ConnectTimeout=10

上記の場合、「PreferredAuthentications = gssapi-with-mic、gssapi-keyex、hostbased、publickey」設定はどこから取得されますか。これらはクライアントのSSH構成設定に由来すると思いますが、これは正しいですか?

これを 'ansaible.cfg'で定義することで、ssh引数をオーバーライドできることを理解しています

[ssh_connection]
scp_if_ssh=True
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey

誰かがこれを私に説明できますか?ありがとう

2
emeraldjava

「-o PreferredAuthentications = gssapi-with-mic、gssapi-keyex、hostbased、publickey」が ソースコード にハードコードされていることに気づきました

Ansible.cfgのssh_argsをオーバーライドする場合、 '-o PreferredAuthentications = publickey'がsshコマンドラインに追加されますが、これは "-o PreferredAuthentications = gssapi-with-mic、gssapi-keyex、hostbased、publickey"を置き換えません。

例:

$ grep ssh_args /etc/ansible/ansible.cfg 
#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o     PreferredAuthentications=publickey
$ ansible rhel7a -m ping -vvvv |grep EXEC
<rhel7a> SSH: EXEC ssh -vvv -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/user/.ansible/cp/13dd447a86 rhel7a '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
2
NoNoNo