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

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

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

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

Ansible

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

Q&A

解決済

1回答

6185閲覧

Ansible で SSH Agent Forwarding が有効にならない

退会済みユーザー

退会済みユーザー

総合スコア0

SSH

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

Ansible

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

0グッド

1クリップ

投稿2016/12/21 02:55

目的

Ansible を利用して git clone するために SSH Agent Forwarding させようとしています。

やったこと

/etc/ansible/ansible.cfg を作成し、以下を記述

[ssh_connection] ssh_args = -o ForwardAgent=yes

Ansible を実行すると読み込まれている

$ ansible-playbook -i hoge site-hoge.yml -k -u username -vvvv Using /etc/ansible/ansible.cfg as config file

症状

しかし、どうやら SSH Agent Forwarding が有効になっていないらしく、 Ansible で ssh-add -l させてみると失敗している(当然他の git コマンドなども失敗する)

fatal: [xxx.xxx.xxx.xxx]: FAILED! => {"changed": true, "cmd": ["ssh-add", "-l"], "delta": "0:00:00.004968", "end": "2016-12-21 11:44:41.814838", "failed": true, "invocation": {"module_args": {"_raw_params": "ssh-add -l", "_uses_shell": false, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 2, "start": "2016-12-21 11:44:41.809870", "stderr": "Could not open a connection to your authentication agent.", "stdout": "", "stdout_lines": [], "warnings": []}

なお、コンソールから直接 ssh -A username@hoge-server して ssh-add -l すると問題なく Forwarding できています。

$ ssh -A username@hoge-server ------'s password: Last login: Wed Dec 21 11:44:41 2016 from 10.0.2.38 $ ssh-add -l 2048 hogehoge /path/to/key (RSA)

ローカル環境は Mac OS X 10.10 です。

知りたいこと

  • Ansible で SSH Agent Forwarding する方法(設定ファイル以外にも何か設定する箇所があるのか)
  • Ansible で正しく SSH Agent Forwarding できているかどうか確認する方法

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

macOSだと何も指定がなければAnsibleはSSH接続にopensshではなくparamikoを使用するはずです。
-c ssh付き(つまり、opensshを使用するように指定)で実行するとどうなるでしょうか。
opensshで接続された場合、ssh_argsに指定したオプションは-vvv(か、vの数がそれ以上)で見えるはずです。

もし-c sshで行けるようならansible.cfgに以下を追加しても同じ意味になります。

[defaults] transport = ssh

投稿2016/12/21 11:46

yunano

総合スコア841

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

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

退会済みユーザー

退会済みユーザー

2016/12/21 12:15

ご指摘の通り(sshpass をインストール後) `-c ssh` をつけて実行したところ、 `-vvv` オプションで ssh_args は出力されるようになりました。ありがとうございます。 ただ、やはり結果が変わらず…と思いましたが、 `become: yes` をしておりました。 sudo がかかったことによって引き継げなかったようです。 というわけで、ご指摘の通り `ansible-playbook -i hoge site-hoge.yml -k -K -u username -vvvv -c ssh` とすることで無事解決しそうです。 誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問