VirtualBox を立ち上げて新規仮想環境を作成し、Debian のインストール、起動までは快調。次にホストである Mac からゲストの Debian に SSH でログインしようと思ったときにはたと止まりました。
ネットワークの設定をした覚えはないけど、Debian から外には出られている。一体どういう設定がされたのだ?
Debian 上でネットワーク設定を確認。
$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
Mac は 192.168.0.0/24 のセグメントにいるのでどうやら NAT されているらしい。設定を開いて見てみるもそれらしい箇所はないので、ググってみるとそれらしいものを発見。ポートフォワーディングでいけるとのこと。見つけたコマンドは以下の通り。
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 10022
VBoxManage の 2つめの引数には新規仮想マシン作成時につけた仮想マシン名を指定します。設定を有効にするため仮想マシンを再起動します。
……、立ち上がりません。
仮想マシン"debian"の起動に失敗しました。
Configuration error: Failed to get the "MAC" value (VERR_CFGM_VALUE_NOT_FOUND).
Unknown error creating VM (VERR_CFGM_VALUE_NOT_FOUND).
インストール後に仮想マシンの設定でいじったのはポートフォワーディングのところだけなので、ポートフォワーディングの設定が怪しいですが断言はできません。一旦設定を削除して起動するかどうかを確認。
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol"
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort"
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort"
設定を消したところで起動してみると、起動します。ポートフォワーディングの設定を間違えているのは間違いありません。VirtualBox をインストールするときにマニュアルらしきものがあったような気がするので dmg ファイルをマウントして中を見てみると、ありました。"6.4.1 Configuring port forwarding with NAT" を読んでいると以下のような記述が
An example of how to set up incoming NAT connections to an ssh server on the guest requires the following three commands:
VBoxManage setextradata "Linux Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "Linux Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "Linux Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
The above example assumes a PCNet virtual network card; if you have configured the guest to use the Intel PRO/1000, replace “pcnet” with “e1000” in the above commands.
ネットワークカードは Intel だった気がします。VirtualBox の仮想マシン詳細画面にもネットワークの情報が記載されていた気がするので確認。Intel PRO/1000 MT Desktop (NAT) でした。コマンドを以下のように書き換えて実行します。
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/Protocol" TCP
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/GuestPort" 22
$ VBoxManage setextradata "debian" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/HostPort" 10022
設定後、起動ボタンをクリックすると今度は無事に立ち上がりました。SSH ログインもできることを確認し無事解決です。