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
誰かこれを説明してくれませんか?ありがとう
答え1
私はそれが-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
ハードコードされていることに気づきましたソースコード
を上書きするssh_args
とansible.cfg
ssh-o PreferredAuthentications=publickey
コマンドラインに追加されますが、これは置き換えられません-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'"'"''