🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Ansible

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

Ansible Tutorial

Ansible Tutorialは、Pythonで記述されたサーバの設定・管理を自動化させるためのツールです。サーバからクライアントへ直接命令し結果を取得するため、各クライアントでAnsible Tutorialをインストールが不要になります。

Q&A

解決済

1回答

4134閲覧

Ansibleの公開鍵認証に関連して,sshpassのあたりでフリーズします

yamadoc

総合スコア26

公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Ansible

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

Ansible Tutorial

Ansible Tutorialは、Pythonで記述されたサーバの設定・管理を自動化させるためのツールです。サーバからクライアントへ直接命令し結果を取得するため、各クライアントでAnsible Tutorialをインストールが不要になります。

0グッド

0クリップ

投稿2020/11/24 08:29

編集2020/11/26 06:14

SSHの公開鍵認証を設定済みのサーバに対し,下記の通りansible-playbookを実行したところ

bash

1$ ansible-playbook -i hosts install.yml -vvv -K

以下のような結果を出力しフリーズしてしまいました.

ansible

1<192.168.0.*> ESTABLISH SSH CONNECTION FOR USER: yamadoc 2<192.168.0.*> SSH: EXEC sshpass -d11 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o Port=1022 -o 'User="yamadoc"' -o ConnectTimeout=10 -o ControlPath=/home/yamadoc/.ansible/cp/e559f14bc0 192.168.0.* '/bin/sh -c '"'"'echo ~yamadoc && sleep 0'"'"''

当初,Gathering Factでとまっていたため,falseにして収集しないよう設定したのですが,今度は,task実行時に同じところでフリーズしてしまいます.

どなたか,対応策をご教示頂けないでしょうか?
対象サーバ側について,公開鍵認証を設定する前はうまくいっていたのですが,公開鍵認証を設定したら上記のような現象が起こりフリーズします.また,対象サーバ側ではsshpass導入済みです.

host_key_checking の設定は行っておりませんでしたので,設定を以下の通り追記しましたが,変わりませんでした.

ansible

1# uncomment this to disable SSH key host checking 2host_key_checking = False

ansible -m ping 192.168.0.* -vvv を実行しても,pongはちゃんと返ってきません.同じ現象が起こり,フリーズしてしまいました.

追記:
フリーズした後は,そのままでエラーなどの表示はございません.ansible-config view を実行したところ下記の通りとなりました.

bash

1$ ansible-config view 2(省略) 3host_key_checking = False 4(省略)

また,下記の設定を行って,再度ansible-playbookの実行を試みましたが,フリーズしたままでした.

ansible

1ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

以下の個所でフリーズいたします.

bash

1<192.168.0.*> ESTABLISH SSH CONNECTION FOR USER: yamadoc 2<192.168.0.*> SSH: EXEC sshpass -d11 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=1022 -o 'User="yamadoc"' -o ConnectTimeout=10 -o ControlPath=/home/yamadoc/.ansible/cp/e559f14bc0 192.168.0.18 '/bin/sh -c '"'"'echo ~yamadoc && sleep 0'"'"''

さらに,~/.ansibleも削除してみて試してみているのですが,やはりうまくいきません.

20201126時点の追記:
対象サーバ側上で以下のコマンドを実行してみたところ,何やら入力待ちになりましてそのままフリーズしました.

bash

1sshpass -d11 ssh -vvv -C -o ControlMaster=auto ~省略~

ssh-agentを使ってみたところ無事に解決できました.こちらについては自己解決の方へ詳細を記述させて頂きます.

お忙しいところ恐縮ですが,何卒よろしくお願い申し上げます.

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

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

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

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

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

comefigo

2020/11/24 12:45

host_key_checkingの設定はされていますでしょうか?
SugiTK

2020/11/24 14:56

まずは ansible -m ping -i hosts -vvv するとちゃんと pong が返ってくるでしょうか。
yamadoc

2020/11/25 00:32

ありがとうございます.ご依頼いただきました内容について,検討の上追記させて頂きました.引き続きよろしくお願い申し上げます.
comefigo

2020/11/25 00:35

フリーズした後はエラーなど何かメッセージが出力されていますか? もし、出力されているようでしたら、結果の記載をお願いします。 host_key_checkingを設定されているようですが、有効化かどうかを確かめるために、ansible-config viewの結果を記載して頂けませんか?
yamadoc

2020/11/25 00:57

ありがとうございます.ご依頼いただいた内容について追記させて頂きました.また,私の方で調べて試した結果(ssh_argsの設定)についても追記させて頂きました. 引き続きよろしくお願いいたします.
comefigo

2020/11/25 01:50 編集

追記ありがとうございます。 私は実際にsshpassを使っていないので、何とも言えないのですが、私なら、上記されているコマンドを手動で実行してみて、その際の結果がどうなるのかを試します。 sshpass -d11 ssh -vvv -C -o ControlMaster=auto ~省略~ フリーズの現象はたいてい、入力待ち状態でずっとレスポンスが帰ってこないことが多いですので、なにかしらそういう状態になっているのではないかと推測しています。もしかしたらCentOSへの自動パスワード送信がうまく機能しておらず、パスワード入力待ち状態でフリーズしているのではないかと。。。
yamadoc

2020/11/26 06:15

お忙しいところお返事頂きありがとうございました. 頂いたアドバイスの通り,コマンドを実行してみたところ,おっしゃる通り入力待ちになりました. そこで,ssh-agentを使ってみたら無事に解決できました.本当にありがとうございました.
guest

回答1

0

自己解決

Ansibleを実行しているUbuntu側で,ssh-agentを使ってみたところ解決できました.

まずssh-agentを実行し,秘密鍵を登録します.

bash

1ssh-agentの実行 2$ eval `ssh-agent` 3 4ssh-addによる秘密鍵とパスフレーズの登録 5$ ssh-add 秘密鍵のパス 6 7秘密鍵の登録確認 8$ ssh-add -l 

この状態でansible-playbookを実行したところフリーズすることなく無事に完了できました.

お忙しい中ご助言頂き,ありがとうございました.

投稿2020/11/26 06:20

yamadoc

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問