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

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

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

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

Ansible

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

Q&A

解決済

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

退会済みユーザー

退会済みユーザー

総合スコア0

SSH

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

Ansible

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

1回答

0グッド

0クリップ

5304閲覧

投稿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 できているかどうか確認する方法

よろしくお願いします。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

2

ベストアンサー

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

mahata, MarlTake👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

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` とすることで無事解決しそうです。 誠にありがとうございます。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

SSH

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

Ansible

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