VirtualBoxを用いたUbuntu 12.04 LTSにおけるSSH接続の流れ

改めて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」を選択します。

![Screen Shot 2013-10-23 at 12.42.26 AM.png](https://qiita-image-store.s3.amazonaws.com/0/29152/1a147ea6-ad3a-5acb-2536-25578107c763.png)

Setting画面を閉じた後、更にメニューバーのPreference → Networkタブの順に開きます（VirtualBox ManagerのSetting画面とPreferenceとでそれぞれ全く別のNetworkタブがあってややこしいですよね、私も最初にここで詰まりました）。

![Screen Shot 2013-10-23 at 12.44.04 AM.png](https://qiita-image-store.s3.amazonaws.com/0/29152/4f3f0ac3-b62f-f083-641a-a1ffbd053019.png)

NetworkタブのHost-only Networkの項目に「vboxnet0」とあります。これをダブルクリックすると、このアダプタのIPv4アドレスが記述されています。デフォルトでは「192.168.56.1」となっているはずです。このIPアドレスをコピーしておきましょう。

再度、Ubuntu Serverを起動します。「/etc/network/interfaces」をVimなどで開きます。末尾に以下の内容を追加して保存します。

```bash
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はインターネットなど外部接続のためのアダプタです）。

```bash
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アドレスとホスト名が対応付けられます。

```bash
192.168.56.101 ホスト名.local
```

「.ssh/config」を開き、以下の記述を追加します。

```bash
ForwardAgent yes
ServerAliveInterval 120
Hostname ホスト名.local
User ユーザ名
```

再度、Ubuntu側へSSHで接続してみましょう。今度は、「ssh ホスト名」と入力するだけでUbuntu Serverへログインできるはずです。