MacのVirtualBoxに作った仮想マシンへホストOSからアクセスできるようにする

MacVirtualBox仮想マシンを作ってインターネットに接続できることを確認できたのでホストOSからアクセスできるようにします。
ponsuke-tarou.hatenablog.com

VirtualBoxの仮想ネットワークを設定する

VirtualBox仮想マシンではデフォルトでNAT*1に設定されており、DHCPIPアドレスなども自動的に割り当てられるため何もしないでもインターネットに接続できました。
しかし、この状態ではホストOSからはアクセスできないので、さまざまな検証を行うための環境としては不十分です。
gihyo.jp

ゲストOSから仮想マシンへアクセスできるようにホストオンリーアダプタを設定します。

  1. Oracle VM VirtualBox Managerのメニューにある[VirtualBox] > [Preference...]を選択します。f:id:ponsuke_tarou:20170607214243p:plain
  2. [Network] > [Host-only Network] > [+]アイコンを選択すると「vboxnet0」が追加されます。f:id:ponsuke_tarou:20170607214817p:plain
  3. ドライバアイコンを選択してダイアログを開きます。f:id:ponsuke_tarou:20170607214912p:plain
  4. [DHCP Server] > [Enable Server]チェックボックにチェックを入れます。
  5. 各パラメータに値を設定し、[OK]ボタンを押下して設定を完了します。f:id:ponsuke_tarou:20170607215404p:plain

サーバーアドレス:VirtualBoxに作成されるDHCPサーバーのIPアドレスを指定
サーバーマスク:ゲストOSにDHCPで割り当てるIPアドレスのネットマスクを指定
アドレス下限:ゲストOSにDHCPで割り当てるIPアドレスの範囲の最小値を指定
アドレス上限:ゲストOSにDHCPで割り当てるIPアドレスの範囲の最大値を指定
VirtualBox CentOS6.7 64bitでNAT、ホストオンリーアダプターを使用 | kakiro-web カキローウェブ

仮想マシンの仮想ネットワークインターフェースを追加する

この時点で仮想マシンが起動している場合は停止してから追加します。

$ shutdown -h now
  1. Oracle VM VirtualBox Managerから仮想マシンを選択して右側のウィンドウから[Network]リンクを押下してダイアログを開きます。f:id:ponsuke_tarou:20170607220159p:plain
  2. [Adapter 2] > [Enable Network Adapter]チェックボックにチェックを入れます。
  3. [Attached to]で「Host-only Adapter」を選択します。(Host-only Adapterが複数無ければ[Name]に先程設定した「vboxnet0」が表示されるはず)。
  4. [OK]ボタンを押下してダイアログを閉じます。f:id:ponsuke_tarou:20170607220847p:plain
  5. ホストオンリーアダプタが追加されました。f:id:ponsuke_tarou:20170607221039p:plain

DHCPIPアドレスが割り当てられるように設定する

  1. 仮想マシンを起動してログインします。
  2. 「ip addr show」で「enp0s8」ネットワークインターフェースが追加されていることを確認します。f:id:ponsuke_tarou:20170607231341p:plain

ここで、IPアドレスが割り当てられていない予定でした・・・・。

IPアドレスが割り当てられてられていないので、設定を変更してDHCPIPアドレスが割り当てられてられるようにします。
gihyo.jp

が、たぶん↓コレをやったので既に割当てられていました。
qiita.com

ちなみにネットワークインターフェースの設定ファイルは
Ubuntu : /etc/network/interfaces <---------- 雑誌の特集で使っている
CentOS : /etc/sysconfig/network-scripts/ifcfg-eth0 <---------- このブログで使っている
となります。
qiita.com

ホストOSから仮想マシンSSHで接続してみる

$ ssh mana@192.168.56.201
The authenticity of host '192.168.56.201 (192.168.56.201)' can't be established.
ECDSA key fingerprint is SHA256:j+mhEbwrkV5GaVU8gat34VZs2A4+q4q8HaKjOg9m33I.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.201' (ECDSA) to the list of known hosts.
mana@192.168.56.201's password: 
Last login: Wed Jun  7 23:10:53 2017
[mana@localhost ~]$ 
[mana@localhost ~]$ logout
Connection to 192.168.56.201 closed.

接続できました。

上記で表示されたメッセージは初回接続でしか出ません。
SSHで接続するとホストOS側の公開鍵の有無を確認し、公開鍵がないことからホストOSの~/.ssh/known_hostsファイルに設定するかを尋ねられています。
ここで「yes」を入力することでknown_hostsに公開鍵を保存し、次回接続からはメッセージは表示されなくなるのです。
http://www.turbolinux.co.jp/products/server/11s/user_guide/sshconnect.html

今回使われたのはECDSA*2というデジタル署名です。

$ vi ~/.ssh/known_hosts 
192.168.56.201 ecdsa-sha2-nistp256 AAAAE2<省略>GJXuRf7E=

再びホストOSから仮想マシンSSHで接続してみます。

$ ssh mana@192.168.56.201
mana@192.168.56.201's password: 
Last login: Thu Jun  8 00:04:09 2017 from 192.168.56.1
[mana@localhost ~]$ 

今回はメッセージが表示されることなく接続できました。