Vagrant で共通の秘密鍵を使用する
1. はじめに
Vagrant
では仮想マシンごとに秘密鍵が生成される。が、同じ鍵を利用したい。
確認した環境はこちら
windows
$ ver Microsoft Windows [Version 10.0.18363.778] $ vagrant -v Vagrant 2.2.6
mac
$ sw_vers ProductName: macOS ProductVersion: 11.0.1 BuildVersion: 20B50 $ vagrant -v Vagrant 2.2.9
2. 仮想マシンごとの秘密鍵を利用(デフォルト)
まずは、通常の仮想マシンごとに秘密鍵が作られる状態を確認しておく。
Vagrantfile
を以下のようにして仮想マシンが2台作られるようにする。
Vagrantfile
1Vagrant.configure("2") do |config|
2 config.vm.box = "centos/7"
3
4 (0..1).each do |i|
5 config.vm.define "server#{i}" do |node|
6 node.vm.hostname = "server#{i}"
7 end
8 end
9end
ssh-config
を見る。
ssh-config出力
$ vagrant ssh-config Host server0 HostName 127.0.0.1 User vagrant Port 2203 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile C:/projects/vagrant-vm/ansible-playground/.vagrant/machines/server0/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL Host server1 HostName 127.0.0.1 User vagrant Port 2204 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile C:/projects/vagrant-vm/ansible-playground/.vagrant/machines/server1/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
IdentityFile
を見るとそれぞれの仮想マシンごとに秘密鍵が作られている。
macの場合も同じ。
ssh-config出力
$ vagrant ssh-config Host server0 HostName 127.0.0.1 User vagrant Port 2200 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/siwa32/projects/vagrant_test/test1/.vagrant/machines/server0/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL Host server1 HostName 127.0.0.1 User vagrant Port 2201 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/siwa32/projects/vagrant_test/test1/.vagrant/machines/server1/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
3. 共通の秘密鍵を利用
先ほどの例に、同じ秘密鍵を使用されるように変更してみる。
config.ssh.insert_key = false
にすることにより全ての仮想マシンで同じ秘密鍵を使用することができる。
Vagrantfile
1Vagrant.configure("2") do |config|
2 config.vm.box = "centos/7"
3 config.ssh.insert_key = false (1)
4
5 (0..1).each do |i|
6 config.vm.define "server#{i}" do |node|
7 node.vm.hostname = "server#{i}"
8 end
9 end
10end
1 | : falseに設定することで同じ鍵を使うようになる |
ssh-config
で確認してみるとそれそれの仮想マシンで IdentityFile
が同じファイルとなっている。
秘密鍵の場所はユーザディレクトリの .vagrant.d
ディレクトリにある insecure_private_key
ファイルとなる。
ssh-config出力
$ vagrant ssh-config Host server0 HostName 127.0.0.1 User vagrant Port 2203 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile C:/Users/siwa32/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL Host server1 HostName 127.0.0.1 User vagrant Port 2204 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile C:/Users/siwa32/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL
macの場合もユーザディレクトリの .vagrant.d
ディレクトリにある insecure_private_key
ファイルとなる。
vagrant ssh-config Host server0 HostName 127.0.0.1 User vagrant Port 2200 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/siwa32/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL Host server1 HostName 127.0.0.1 User vagrant Port 2201 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/siwa32/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL