[CoreOS] vagrantで立ち上げたCoreOSに他のゲストVMからSSH接続する
Vagrantで立ち上げたDockerコンテナ用OS・CoreOSに、ホストマシンではなく他の仮想マシンからSSH接続する時に少しハマったのでまとめておきます。
公開日: 2018.2.1
ハマりポイント
先にハマりポイントをあげておきますと、
- ポートは22番
- ユーザー名はcore
- 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 [email protected] -i ~/.ssh/insecure_private_key
.ssh以下に設定ファイル(config)を用意する場合は、下記のように記述します。
Host vagrant01
HostName 172.17.8.101
User core
Port 22
IdentityFile ~/.ssh/insecure_private_key
要チェックポイントとしては、
- ポートはvagrant ssh-configで出てくる2222番ではなく22番
- ホストは、こちらもvagrant ssh-configで出てくる127.0.0.1ではなく、先ほど調べたIPアドレス
という点です。
ここがわからなくて小一時間ハマりました。。。
自分の場合は、レンタルしているサーバーごとにVagrantでVMを立てているので、ゲストOS同士でSSH接続ができるようになって、だいぶ便利になりました。
同じ状況でハマっている方の例の一つになれれば幸いです。