LoginSignup
19
18

More than 5 years have passed since last update.

Vagrant provision でも SSH Agent Forwarding する

Last updated at Posted at 2015-03-06

githubに置いてあるprivateリポジトリを取得するようなprovisioningを行いたいときとか、ありますよね。
よね。

まえおき

vgarantで動かしている仮想マシンでも、ssh-agentによるforwardingを行いたいときは、Vagrantfileにforwardingの設定を書けばOK。

Vagrantfile
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # ssh-agentによるforwardingを使用する
  config.ssh.forward_agent = true

end

しかし、provisioningをしている間はどうにも有効になってない様子?

Vagrantfile
(前略)

  # Host認証がどうとか、って言われてエラー
  config.vm.provision "shell", inline: "git clone git@github.com:path/to/private/repository"

(後略)

このリポジトリは初期設定に必要なんだ!
どうしてもprovisioningで取得したいんだ!!!!!

解決方法

環境

  • ホスト側
    • MacOSX 10.9.5
    • Vagrant 1.7.2
    • VirtualBox 4.3.24
    • githubの認証に使う鍵は ssh-add 済み
    • provisiongは "shell" で行う
  • ゲスト側
    • Ubuntu 12.04 x64 (precise64 boxを使用)

やりかた

provision の引数に privileged: false を加えます。
これで、ゲスト側マシンでもホストの鍵が使えます。
(ただし、ユーザーが vagrant の状態でprovisioningが実行されるので注意。root権限が必要なprovisionは別に分けた方がいいかも)

しかしこのままでは、ホストの確認でyes/noを問われてしまい、スクリプトが進みません。
仕方ないので、StrictHostKeyCheckingを行わないようにします。

Vagrantfile
(前略)

  # もちろん、forwardingの設定も必要
  config.ssh.forward_agent = true

  # これでクローンができる
  config.vm.provision "shell", privileged: false, inline: <<-EOT
    echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
    git clone git@github.com:path/to/private/repository
  EOT

(後略)

参考

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18