#0. モチベーション
WindowsPCで手頃な仮想環境を整えたいけど、
SSH接続に合わせてネットワークを設定するのが面倒でならない方向けです。
ただし、作業記述的な内容ですので、技術的な貢献はありません。
したがって地味です。
#1. 用意するもの
ホスト側
- OS: Windows7 ( 64-bit )
- SSHクライアント: Tera Term 4.82 ( #SVN5513 )
ゲスト側
- OS: Ubuntu 14.04.3 LTS
- 仮想化ソフト: VirtualBox ( 4.3.10 r93012 ) ( 4以降 )
細かなバージョンは参考程度で。
#2. 手順
##2-1. Ubuntuディスクイメージの入手
Node.js Virtual Machines : https://bitnami.com/stack/nodejs/virtual-machine
bitnamiは様々な開発環境を仮想環境が付属する形で手軽に入手できるサービスです。
今回はこの手軽さを利用して、Ubuntuディスクイメージを手に入れます。
上記リンクのNode.js 5.4.1-0 (64-bit) (zip) をダウンロード後、
お好みのフォルダに展開すると10個のvmdkファイルが手に入ります。
※Q1. bitnami のダウンロードページにVMWareって書いてあるんだけど、平気?1
##2-2. VirtualBoxでの仮想マシン作成と起動前の設定
Virtual Appliances Quick Start Guide - Bitnami documentation :
https://wiki.bitnami.com/Virtual_Appliances_Quick_Start_Guide#Virtual_Box
英語の読める方は、上記リンクのbitnamiの解説Wikiを読みましょう。
ただし、以下の手順の項目6と内容が異なることに注意してください。
このWikiは後の節で何度か参照します。
- VirtualBox 4以上であることを確認。
- 仮想マシンを新規作成して**Linux Ubuntu (64 bit)**を選択。
- 「メモリーサイズ」を512より大きく設定。今後マシンをRubyやJavaアプリに利用するなら1GBより大きくするのが推奨。
- 「すでにある仮想ハードドライブファイルを使用する」を選択して、ファイルブラウザから**#2-1節で展開した「vmdk」ファイルのうち
なんでもよいのでbitnami-nodejs-5.4.1-0-ubuntu-14.04.vmdk**を選択(差はない)すると設定終了2。 - VirtualBoxメニューから「設定」を開き、「システム」>「起動順序」の☐ネットワークに☑チェック。
- 「ネットワーク」>「アダプター1」の「割り当て」にNATを選択すると「ポートフォワーディング」が有効化。
- 同じ「ネットワーク」から「ポートフォワーディング」を開いて「新規ルールを追加」を選択したら、追加されたルールの「ホストポート」に3333(空いていればなんでもよい)を、「ゲストポート」に22を入力後「OK」して設定終了。
Wikiではアダプターでブリッジアダプターを選択していますが、本記事ではNATを選択しているのが相違点です。ブリッジを選択した時のやり方知りたいな、誰か同じ環境で試して記事書いてほしいな。
##2-3. 仮想マシン起動後のSSHクライアントの導入
Virtual Appliances Quick Start Guide - Bitnami documentation :
https://wiki.bitnami.com/Virtual_Appliances_Quick_Start_Guide#How_to_enable_sshd.3f
の通りでOK。以下のコマンドを叩いてください。
sudo mv /etc/init/ssh.conf.back /etc/init/ssh.conf
sudo start ssh
今後このマシンでのSSH接続を何度も利用する場合、次のコマンドを叩いてください。
sudo apt-get update #2~3分かかります
sudo apt-get install sysv-rc-conf -y
sudo sysv-rc-conf ssh on
sshサービスを起動時に開始するようにしています。
sysv-rc-confはUbuntu14では使えないchkconfigに代わるコマンドです。
参考:ubuntu版chkconfigのsysv-rc-confを使う - Qiita :
http://qiita.com/muraikenta/items/df0082b7f7d0f310d942
※Q2. ssh-keygenはしないのですか?3
#2-4. TeraTermによるSSH接続
新しい接続を開いたら、#2-2節の項目7に対応させる形で、
「ホスト」には127.0.0.1:3333を、「ポート」には22を入力。
初回にはセキュリティ警告が表示されますがエラーではありません。
Linuxのアカウントとパスワードを入力、「プレインテキストを使う」を選択後「OK」。
これでSSH接続に成功しました。
#3. 課題
課題は、仮想化ソフトのネットワークアダプターにブリッジを選ぶ手順です。
この場合、まずifconfigコマンドでstaticなIPアドレスを設定するのですが、
それらのIPではなぜかTeraTermからの通信に失敗されるか、拒否されてしまいます。
- [VirtualBox上のCentOSにTeratermからssh接続する - フルスタックエンジニアを目指して] (http://skkskynw.hateblo.jp/entry/2015/10/12/011236)
- TeraTermが動かない - yoneyoreの日記
上の2つの記事では、後者の記事が指摘するような様々な外部要因はさておいて、
CentOSの/etc/sysconfig/network-scripts/ifcfg-****中でONBOOT=yesとして
ネットワークインターフェースの有効化を図ることでの解決が報告されていますが、
Ubuntuでは/etc/network/interfacesに置き換わり記法も変わってしまい、
筆者も試行錯誤してみたのですが残念ながら分からずじまいでした。
ブリッジによるUbuntuの仮想マシンへのSSH接続成功例が今後期待されます。
#4. まとめ
本記事の手順について、SSH接続を達成するための本質的なポイントは次の3つです。
- 仮想化ソフトのネットワークアダプタにNATを選んでポートフォワーディングする。
- ゲストOSでSSHサービスを起動する。
- SSHクライアント側の接続情報と仮想化ソフトのネットワーク設定を対応させる。
#脚注
-
A1. 聡い読者さまは bitnami のダウンロードページに VMWareと書いてあることにお気づきでしょう。ですが、vmdkはVirtualBoxでも利用できる形式であることと、以前からVirtualBoxを導入済みであった筆者の勝手な都合から、本記事内容はVMWare向けと書かれたものをVirtualBoxで動作する試みを兼ねています。結果としては成功しているので、細かなこだわりが無ければ利用にたえうる、ということでよいではないのでしょうか。 ↩
-
1個1個確認したのではなく、サイズを確かめると明らかに差が見られたので、私が使用したファイル名に訂正しました。申し訳ありません。 ↩
-
A2. 本記事のゴールはあくまでもSSH接続の成功なので、ssh-keygenまでやりたい人はやはり詳しく載っているWikiをご覧ください。
というか誰か編集してhttps://wiki.bitnami.com/Virtual_Appliances_Quick_Start_Guide#How_to_configure_your_sshd_server_to_support_key_based_authentication.3f ↩