公開鍵認証でvagrantの仮想マシン間でssh接続する

private_networkにしておくと仮想マシン間で通信が可能

Vagrantfileは以下の通り

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"

  config.vm.define :app1 do |app1|
    app1.vm.hostname = "app1"
    app1.vm.network "private_network", ip: "192.168.33.10"
  end

  config.vm.define :app2 do |app2|
    app2.vm.hostname = "app2"
    app2.vm.network "private_network", ip: "192.168.33.20"
  end
end

app1からapp2へのssh接続の例

vagrantを立ち上げる

$ vagrant up

ssh-copy-idで鍵をapp1からapp2にコピーしようとするとPermission deniedとなる(centos7でPasswordAuthenticationがデフォルトでnoとなっているのが原因らしい)ので/etc/ssh/sshd_configを編集

$ vagrant ssh app2
[vagrant@app2 ~]$ sudo vi /etc/ssh/sshd_config

PasswordAuthenticationをyesにする

PasswordAuthentication yes

変更を反映させる

[vagrant@app2 ~]$ systemctl restart sshd

app1に接続して鍵を作成して、app2にコピー

$ vagrant ssh app1
[vagrant@app1 ~]$ ssh-keygen
[vagrant@app1 ~]$ ssh-copy-id 192.168.33.20

これで仮想マシン間のssh接続ができるようになりました

[vagrant@app1 ~]$ ssh 192.168.33.20
[vagrant@app2 ~]$

参考