[CoreOS] vagrantで立ち上げたCoreOSに他のゲストVMからSSH接続する

Vagrantで立ち上げたDockerコンテナ用OS・CoreOSに、ホストマシンではなく他の仮想マシンからSSH接続する時に少しハマったのでまとめておきます。

ハマりポイント

先にハマりポイントをあげておきますと、

  1. ポートは22番
  2. ユーザー名はcore
  3. IPは、Vagrantfileにあるipの値

ということです。

察しの良い方は、これだけでおそらく解決でしょうから、この先は読み飛ばして頂ければと思います。

CoreOSへのSSH情報を確認する

CoreOS自体は、vagrantですでに立ち上がっているものとします。

まずは、CoreOSのssh情報を確認します。

vagrant ssh-configで設定を確認する

vagrant ssh-config

と打つと、

Host core-01
  HostName 127.0.0.1
  User core
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/satos/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardAgent yes

こんな感じで結果が出てきます。

ここで使うのは、UserとIdentityFileの場所だけです。

CoreOSの外部IPアドレスを確認する

vagrant ssh-configではHostName 127.0.0.1となっていますが、vagrantで立ち上げたCoreOSはホストマシンからでもアクセスできるようにプライベートネットワークが設定されています。

CoreOSのVagrantfileを確認してみると、

ip = "172.17.8.#{i+100}"
config.vm.network :private_network, ip: ip

という記載があって、172.17.8.の101番からの連番でIPが決まるようです。

ここでは、1台目のVMなので172.17.8.101となります。

念のために、一度CoreOSにvagrant sshでログインして、ifconfigを実行すると、、、

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.8.101  netmask 255.255.0.0  broadcast 172.17.255.255

たしかに、eth1で172.17.8.101が割り当てられていました。

SSH接続する

ユーザー名、IPアドレス、認証ファイルがわかったのでSSH接続します。

あらかじめ、IdentityFileをCoreOSに接続したいVMにコピーしておきます。ここでは、.sshディレクトリ以下にコピーしています。

ssh core@172.17.8.101 -i ~/.ssh/insecure_private_key

.ssh以下に設定ファイル(config)を用意する場合は、下記のように記述します。

Host vagrant01
  HostName 172.17.8.101
  User core
  Port 22
  IdentityFile ~/.ssh/insecure_private_key

要チェックポイントとしては、

  1. ポートはvagrant ssh-configで出てくる2222番ではなく22番
  2. ホストは、こちらもvagrant ssh-configで出てくる127.0.0.1ではなく、先ほど調べたIPアドレス

という点です。

ここがわからなくて小一時間ハマりました。。。


自分の場合は、レンタルしているサーバーごとにVagrantでVMを立てているので、ゲストOS同士でSSH接続ができるようになって、だいぶ便利になりました。

同じ状況でハマっている方の例の一つになれれば幸いです。