改めてVirtualBox上のUbuntuとMacOS XとのSSH接続についてまとめたいと思います。類似の記事はあると思いますが、自分用メモも兼ねていますのでご容赦ください。
動作環境
*ホスト側
MacOS X 10.8.5
*ゲスト側
Ubuntu Server 12.04 LTS
作業手順
Ubuntu Server側の設定
VirtualBoxを用いて、Ubuntu Serverをインストールします。 インストールが完了したら、一旦Ubuntu Serverをシャットダウンします。
VirtualBox Manager画面左上にあるSettingを開きます。その中のNetworkのタブを開き、Adapter2の「Attached to」の項目から「Host-only Adapter」を選択します。
Setting画面を閉じた後、更にメニューバーのPreference → Networkタブの順に開きます(VirtualBox ManagerのSetting画面とPreferenceとでそれぞれ全く別のNetworkタブがあってややこしいですよね、私も最初にここで詰まりました)。
NetworkタブのHost-only Networkの項目に「vboxnet0」とあります。これをダブルクリックすると、このアダプタのIPv4アドレスが記述されています。デフォルトでは「192.168.56.1」となっているはずです。このIPアドレスをコピーしておきましょう。
再度、Ubuntu Serverを起動します。「/etc/network/interfaces」をVimなどで開きます。末尾に以下の内容を追加して保存します。
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
「sudo /etc/init.d/networking restart」と入力してネットワークを再起動します。その後、ifconfigコマンドを入力してeth1(先ほど追加したHost-onlyアダプタ)が有効になっているか確認しましょう。正しく設定されていれば次のようにeth1の内容が表示されるはずです。これで、ホスト側のMacOS Xと通信できる準備が整いました(ちなみにeth0はインターネットなど外部接続のためのアダプタです)。
senachi@MyECsiteProject:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:19:0d:a5
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe19:da5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4597 (4.5 KB) TX bytes:8844 (8.8 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:34:be:bf
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe34:bebf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:312 errors:0 dropped:0 overruns:0 frame:0
TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36925 (36.9 KB) TX bytes:24425 (24.4 KB)
次の手順でsshをインストールしましょう。「sudo apt-get update」→「sudo apt-get install ssh」
ホームディレクトリ上で「mkdir .ssh」と入力して.sshディレクトリを作ります。また、「chmod 700 .ssh」と入力してパーミッションも変更します。.sshディレクトリに移動して、「touch authorized_keys」と入力して「authorized_keys」ファイルを作成します。
「/etc/ssh/sshd.config」を開き、「# PasswordAuthentication yes」となっている記述を「PasswordAuthenication no」に変更します。
MacOS X側の設定
この時点で、Ubuntu Serverに対してSSHを用いて接続できると思います。「ssh ユーザ名@192.168.56.101」と入力して接続できるか試して見ましょう。ただ、この状態ではパスワードの入力を省略したりできませんし、ゲスト側のIPアドレス入力を省略できないなど不便です。
MacOS X側でも同様に、ホームディレクトリに.sshディレクトリを作成します。公開鍵を作るために.sshディレクトリに移動して、「ssh-keygen」と入力します。途中3回ほど質問されますが何も入力せずにreturnキーを続けて押して良いでしょう。すると、id_rsa.pubという公開鍵ファイルが生成されますので中身をコピーします。
Ubuntu Server側の設定
再びUbuntu Server側の設定に戻ります。先ほどコピーした公開鍵(id_rsa.pubの中身)を「.ssh/authorized_keys」にペーストします。
MacOS X側の設定
「/etc/hosts」に以下の記述を追加します。これで、UbuntuのIPアドレスとホスト名が対応付けられます。
192.168.56.101 ホスト名.local
「.ssh/config」を開き、以下の記述を追加します。
ForwardAgent yes
ServerAliveInterval 120
Hostname ホスト名.local
User ユーザ名
再度、Ubuntu側へSSHで接続してみましょう。今度は、「ssh ホスト名」と入力するだけでUbuntu Serverへログインできるはずです。