直接sshでアクセスできないサーバについて、多段sshを利用してAnsibleにて構成を管理しようとしております。
前提・実現したいこと
workというホストから、host1を経由してhost2へ多段sshで接続したいという状況です。
[work] ―(ssh)→ [host1] ―(ssh)→ [host2]
Ansibleにてhost2の構成を管理するために、workからansible-playbookを走らせるため、多段sshの設定を行っております。
workで作成した鍵ペアの公開鍵をhost1へ、host1で作成した鍵ペアの公開鍵をhost2のauthorized_keysへ追記しており、それぞれwork→host1、host1→host2へのssh接続は問題なくできております。
work→host1
$ ssh 192.168.56.41
host1→host2
$ ssh 192.168.56.42
また、参考にしているページの内容から、ssh_configに以下のように記述しております。
参考ページ 多段SSHをAnsibleで設定する | DevelopersIO
Host host1 HostName 192.168.56.41 User ansible IdentityFile ~/.ssh/id_rsa Host host2 HostName 192.168.56.42 User ansible IdentityFile ~/.ssh/id_rsa ProxyCommand ssh host1 -W %h:%p
質問1 host2への接続
この状態でworkから以下のようにすると、host1へは問題なく接続されます。
$ ssh -F ssh_config host1
しかしhost2へ接続しようとすると以下のようなエラーメッセージが表示されます。
$ ssh -F ssh_config host2 ssh: Could not resolve hostname host1: Name or service not known ssh_exchange_identification: Connection closed by remote host $
エラーメッセージ的には、host1の名前解決ができないという意味だと思いましたので、/etc/hostsに以下のように追記すると、同じコマンドでhost2へ一発で接続されます。
/etc/hosts内追記 192.168.56.41 host1
追記前のhostsファイルやDNSにてhost2が解決できない状況なのである意味わかりやすい状況ですが、指定したssh_configファイル内でHostに指定したホスト名が利用できないものでしょうか。
質問2 公開鍵
work→host1への鍵(以下鍵A)、host1→host2への鍵(以下鍵B)は別のものを用意しておりました。
いろいろ試していると、鍵Aの公開鍵をhost2に設置しても、先程と同じコマンドで問題なくhost2へ接続できます。
$ ssh -F ssh_config host2
host1へは鍵Aの秘密鍵は設置しておりません。
(host1の~/.ssh/id_rsaは鍵Bの秘密鍵です)
これはこのような仕様なのでしょうか。
質問3 ansible_ssh_extra_argsの利用について
参考ページには「「ansible_ssh_extra_args」を利用する方がスマートに」という記述もありました。
ansible_ssh_extra_argsを利用するとどのような利点があるのでしょうか。
補足情報(FW/ツールのバージョンなど)
work
- CentOS 7系
- ansible-2.7.4-1.el7.noarch
- openssh-7.4p1-16.el7.x86_64
- openssh-clients-7.4p1-16.el7.x86_64
host1、2
- CentOS 6系
- openssh-clients-5.3p1-123.el6_9.i686
- openssh-5.3p1-123.el6_9.i686
- openssh-server-5.3p1-123.el6_9.i686
以上となります。よろしくお願いいたします。
あなたの回答
tips
プレビュー