モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

MacでVirtualBox上のUbuntuにsshで接続をする

最近、MacUbuntuの環境作るのにいろいろ試行錯誤してます。
それで、今までVMwareではお手軽に出来てた、ゲストのUbuntuにホストのターミナルからアクセスでつまづいたのでメモ。


環境はこんな感じです。

ホストOS:Mac OS X (10.6.8 Snow Leopard)
ゲストOS:Ubuntu 12.04 LTS desktop
VMVirtualBox


MacVMというとVMware Fusionだと思ってたのですが、MacVMwareVMware Playerにあたるフリーのものがないので、VirtualBoxを使っている人も多い(そっちのほうが多い?)みたいです。
自分の手元にあって使えたのがVMware Fusion 2とバージョンが古く、すでにサポートがされていないようで、またUbuntuのインストール時にちょっと問題があった*1ので、VirtualBoxを利用しました。


ちなみにUbuntuインストール後、画面解像度を高解像度対応にしたり共有フォルダを使えるようにするためには「Guest Additions」という追加機能を入れる必要があるのですが、以前のバージョンの説明を見ていたため、どうやって入れたらよいのかわからなくってちょっとはまりました。
で今のバージョンはすごく簡単になってて、VirtualBoxのメニューから「デバイス」→「Guest Additionsのインストール」を選択するだけです。


UbuntuのUnityの使い勝手とかも見たかったのでdesktop版にしたのですが、普段はMacのターミナルからsshで繋いで使うことがメインになります。
そのためまずsshdを入れてやります。パッケージの名前が「openssh-server」なので注意。

$ sudo apt-get install openssh-server


VMwareだと、あとはこのままゲストOSのNATされてるIPにsshで接続すればよいだけなのですが、VirtualBoxのNATの場合はうまくいきません。
VirtualBoxのNATだと、ゲストから外へはいけるのだけど、ホストからゲストへの接続も出来ないようになっているのです。
これを可能にするためには、ポートフォワードの設定をするか、もうひとつ「ホストオンリーアダプタ」を追加してやるという方法があります。
ホストオンリーアダプタを追加する方法だと、設定が手軽でゲストのIPも固定できるので、たぶんこちらのほうが良いと思います。

よしまさのブログ: Ubuntu 10.10:VirtualBoxでssh接続できるようにする
仮想環境VirtualBoxでのネットワークの設定 : アシアルブログ


ただ、今のバージョンのVirtualBoxだと、単にゲストのネットワーク設定に「ホストオンリーアダプタ」を追加しようとしてもうまくいかないため、ちょっと注意が必要です。

Virtualbox でホストオンリーアダプタを設定するにはホストオンリーアダプタのプロファイルを設定しておく必要がある | ウェブル


やりかたをまとめると

1. VirtualBox VMではなくVMマネージャーの「VirtualBox」→「環境設定」→「ネットワーク」
2. 「ホストオンリーネットワークの追加」(+アイコン)
3. 「vboxnet0」などでホストオンリーネットワークを追加
4. ゲストに振るIPを確認・変更する場合は「ホストオンリーネットワークの編集」から
5. VirtualBox VM上でゲストOSが動いている場合は一旦シャットダウン
6. VirtualBox VMの「仮想マシン」→「設定」→「ネットワーク」
7. 「アダプタ2」→「ネットワークアダプタを有効化」をチェック
8. 「割り当て」を「ホストオンリーアダプタ」
9. 「名前」を先ほどの「vboxnet0」などを選択

これでやっと、ホストからゲストへのアクセスが可能になります。


(追記)

MacにはBonjourという、同ネットワーク内で動いてるサービスを自動で取得できる機能が標準で入っています。
そしてUbuntu 12でも標準で、BonjourをサポートするAvahiというサービスが入っています。


このBonjourにより、ホストのMacから名前で簡単にアクセスできるようになっています。
例えばゲストに入れたUbuntuのホスト名が「ubuntu」だったとすると

% ssh ubuntu.local

という名前でアクセスできてしまいます。
こりゃー超便利ですわ。

(/追記)


あとちなみに、Mac標準のsshで接続してると、ちょくちょく切れていやんな感じでした。

[を] Mac OS X から ssh 接続してもすぐ切れちゃう問題に対処

実は ~/.ssh/config に以下を足すだけで良いとの話も!

ServerAliveInterval 60

~/.ssh/configは、Mac(ホスト)の自分のホームにディレクトリを作ってファイルを作ります。


これで幸せです。
ついでに ServerAliveCountMax も設定しとくと良いようです。

*1:画面サイズの取得がおかしくて巨大なスクリーンを縮小して見てる状況になった