質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

8052閲覧

AnsibleのNTLM認証による接続について

sasaki0628

総合スコア106

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

1クリップ

投稿2020/06/03 12:41

編集2020/06/03 12:50

前提・実現したいこと

NTLM認証を利用してターゲットノードに接続したい。
Administartor以外のAdministrators所属のユーザーで接続したい。

発生している問題

Windows Server 2019 をインストール後、Administrators所属のadminユーザーを追加しました。
adminユーザーに対してNLTM認証で接続をしたいのですがうまくいかず原因も分かりません。
Administratorに対してはNTLMで接続ができています。
Administrator以外のユーザーに対してNTLM認証ができない原因として考えられることなどありましたらなんでもいいので教えて頂きたいです。
インベントリファイルには以下のように記載しています。
[Windows]
TestServer ansible_host=168.100..
[Windows:vars]
ansible_password=password
ansible_port=5985
ansible_connection=winrm
ansible_winrm_transport=ntlm

ansible TestServer -m win_ping -u Administrator を実行すると成功しますが、
ansible TestServer -m win_ping -u admin を実行すると以下のエラーメッセージが表示されます。
"ntlm: the specified credentials were rejected by the server"

試したこと

ファイアウォールの設定を全てオフにしました。
リモート管理、リモートデスクトップを有効にしました。
ドメインには参加していません。
インベントリファイルやプレイブック内でansible_user=adminを定義した場合も試しましたが失敗しました。
AnsibleからWindowsへの接続に必要なWinRMの設定をしたあとのBasic認証では、
Administrator、admin、両方とも問題なくwin_pingが成功しました。

補足情報(FW/ツールのバージョンなど)

OSは Windows Server 2019 の評価版
Ansible のバージョンは2.9.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

winrm configSDDL default
を実行して、権限をつけてあげるといかがでしょうか。

https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html#non-administrator-accounts

投稿2020/06/04 05:54

SugiTK

総合スコア495

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sasaki0628

2020/06/09 06:03

権限をつけてもうまくいきませんでした…。 ansible TestServer -u admin -m win_ping --ask-pass -vvvvv のコマンドの実行結果が以下になります。 ansible 2.9.3 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] Using /etc/ansible/ansible.cfg as config file SSH password: setting up inventory plugins host_list declined parsing /etc/ansible/hosts as it did not pass its verify_file() method script declined parsing /etc/ansible/hosts as it did not pass its verify_file() method auto declined parsing /etc/ansible/hosts as it did not pass its verify_file() method Parsed /etc/ansible/hosts inventory source with ini plugin Loading callback plugin minimal of type stdout, v2.0 from /usr/lib/python3.6/site-packages/ansible/plugins/callback/minimal.py META: ran handlers Using module file /usr/lib/python3.6/site-packages/ansible/modules/windows/win_ping.ps1 Pipelining is enabled. <168.100.*.*> ESTABLISH WINRM CONNECTION FOR USER: admin on PORT 5985 TO 168.100.*.* <168.100.*.*> WINRM CONNECT: transport=ntlm endpoint=http://168.100.*.*:5985/wsman <168.100.*.*> WINRM CONNECTION ERROR: the specified credentials were rejected by the server Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/winrm/transport.py", line 329, in _send_message_request response.raise_for_status() File "/usr/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 401 Client Error: for url: http://168.100.*.*:5985/wsman During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/ansible/plugins/connection/winrm.py", line 413, in _winrm_connect self.shell_id = protocol.open_shell(codepage=65001) # UTF-8 File "/usr/lib/python3.6/site-packages/winrm/protocol.py", line 166, in open_shell res = self.send_message(xmltodict.unparse(req)) File "/usr/lib/python3.6/site-packages/winrm/protocol.py", line 243, in send_message resp = self.transport.send_message(message) File "/usr/lib/python3.6/site-packages/winrm/transport.py", line 310, in send_message self.build_session() File "/usr/lib/python3.6/site-packages/winrm/transport.py", line 293, in build_session self.setup_encryption() File "/usr/lib/python3.6/site-packages/winrm/transport.py", line 299, in setup_encryption self._send_message_request(prepared_request, '') File "/usr/lib/python3.6/site-packages/winrm/transport.py", line 333, in _send_message_request raise InvalidCredentialsError("the specified credentials were rejected by the server") winrm.exceptions.InvalidCredentialsError: the specified credentials were rejected by the server TestServer | UNREACHABLE! => { "changed": false, "msg": "ntlm: the specified credentials were rejected by the server", "unreachable": true }
SugiTK

2020/06/10 09:17

Windows サーバ側での winrm get winrm/config/service の結果についても教えてください。 AllowUnencrypted = false となっている可能性があります。
sasaki0628

2020/06/16 06:48

回答ありがとうございます。無事接続ができました。 結論と致しましては、winrm get winrm/config/service の AllowUnencrypted が false になっていても NTLM認証の接続ができました。winrm configSDDL default で admin ユーザーを追加したところ、win_ping が通るようになりました。(Administratorsグループが既に追加されていたので admin ユーザーを追加していませんでした。)しかし、winrm configSDDL default の設定をしていない場合でも NTLM 認証の接続ができる場合があり、何が原因なのか調査中です…。(追加したユーザーがAdministrators所属として認識されるまでに時間がかかる?)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問