WindowsからVM上のLinuxをSSH経由で利用する開発環境の構築
VirtualBox orVMWare PlayerでLinux環境をWindows 7×64に構築するメモ
今回はVirtualBoxとTurnkey Linux coreを使って構築した。
と見せかけて、最終的にはUbuntu Server使う事にしたので途中まで飛ばしていいです。
なんでVMを使ってまでやるかというと
WIndowsでのCUIはConsole+NYAOSでコンソールとしていいのですが、node.jsなど実行できないものが出てきたので、VM上に環境を作ることにしました。
Cygwin : 食わず嫌いでしたが、食ったら嫌いでした。
coLinux : 64 bitが非対応でした。
必要なもの
- VirtualBox(仮想化ソフトウェア)
- TurnKey Core(サーバー、そこら辺の便利なソフトが入ってる感じのディストリビューション)
- RLogin(SSHクライアント)
Turnkey Linux coreはVM向けにovf形式でも配布してるので、OVFと書かれてるリンクからturnkey-core-バージョン-lucid-x86-ovf.zipをダウンロードして使う。
VirtualBoxを起動してメニューの仮想アプライアンスのインポートから、先ほどのovfをインポートすると自動でTurnKey Coreが仮想マシン一覧に並ぶ。(設定するのは仮想マシンの名前ぐらい)
起動するとパスワードの設定などがあって、パスワード以外はEnter押してればいいと思う。
設定が終わると起動して下のようなメニュー画面が表示される。
メニューを終了させると、CUIで操作できるけどキーやマウスの関係で扱いにくいのでSSHからアクセスして操作する。
RLoginを起動して、サーバの接続から新規追加して、プロトコロルにSSH、アドレスにはLinuxサーバーのIPアドレス、ユーザーはrootで、パスワードは最初の起動時に設定したものを入力して接続する
こっからはサーバー{ゲスト側(Ubuntu)}の設定
まずはrootだとあんまりよくないので、ユーザー(azuという例で)を追加、そのユーザーのパスワードを設定する。
root@core ~# useradd -m -s /bin/bash azu # ユーザーazuを追加する。mオプションがないとHOMEディレクトリが追加されなかった root@core ~# ls /home/ azu/ # HOMEディレクトリがあるのを確認 root@core ~# passwd azu # パスワードの設定 Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
後からログインシェルを決める場合はchsh -s /bin/bash などとする。
Ubuntu Serverを使って環境構築(改めて)
- VirtualBox(仮想化ソフトウェア)
- Ubuntu Server (ゲストOS)
- RLogin(SSHクライアント)
|
ホストOS |
ゲストOS |
|
Windows 7 64bit |
Ubuntu Server |
任意のポートだけを開く感じで使えるのでこっちの方がいい気がします。同様の方法でWebのポートである8080もポートフォワーディングに設定しました。
- VirtualBox + CentOSでNAT接続のポートフォワーディングを行う方法 – 大人になったら肺呼吸
- VirtualBox4.04にCentOS5.5をインストール – sdhrの日記
- VirtualBox 4.0.2のゲストにsshで接続してみる。 « chocokanpan BLOG
注意点としては18.サーバーソフトウェアの選択画面でOpenSSH SERVERを選択してSSHでつなげるようにしておくと楽でいいです(スペースキーで選択チェックが入る)
忘れた場合でも
sudo apt-get install openssh-server
サーバのIPアドレスは
ifconfig
で、わかると思います。
初期設定なら、インストール時に入力したアカウントとパスワードでログインできると思います。
SSHで鍵を使って接続
セキュリティ的にパスワードではなく鍵でSSHをつなぐのが普通だと思うので、SSHの鍵設定をします。
root@core ~# cd /home/azu/ # ユーザのHOMEへ root@core /home/azu# mkdir .ssh root@core /home/azu# cd .ssh # .sshディレクトリを作って移動 root@core azu/.ssh# ssh-keygen -t rsa # 鍵を生成する Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): turnkey # ファイル名は適当に Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in turnkey. Your public key has been saved in turnkey.pub. root@core azu/.ssh# ls turnkey turnkey.pub # .sshディレクトリに秘密鍵と暗号鍵が生成される root@core azu/.ssh# mv turnkey.pub authorized_keys # turnkey.pub を authorized_keysにリネームする root@core azu/.ssh# ls authorized_keys turnkey
RLoginにファイル転機能がついてるので、.sshディレクトリにある秘密鍵(turnkey)をホスト側に移動させます。
ゲスト側(Ubuntu)に秘密鍵は置いておく必要はないので、秘密鍵(turnkey)は転送したら削除します。
# それぞれをnoに書き換える
PermitRootLogin no
PasswordAuthentication no
UsePAM no
# 面倒だったので一度rebootした
自分はportも22から適当なものに変更しました。
が大変参考になった。
まずは適当な共有フォルダを設定しておく。
そして、起動してるVMのメニューにある”Guest Additionsのインストール”を押しておく。
何にも起きてないように見えるが、CDドライブにCDが入った感じになる。
sudo apt-get install build-essential linux-headers-`uname -r` sudo apt-get install xserver-xorg xserver-xorg-core #必要なものを先にインストールしておく ################### # ここまでにGuest Additionsのインストールを押してマウントの準備が必要 ################### mkdir /tmp/cdrom sudo mount /dev/sr0 /tmp/cdrom # Guest Additionsのディスクをマウントする cd /tmp/cdrom sudo bash VBoxLinuxAdditions.run --nox11 sudo addgroup --system --quiet vboxsf sudo usermod -a -G vboxsf azu # ユーザーをvboxsfグループに加える sudo reboot # リブート azu@ubuntu:/media$ ls cdrom sf_azu
リブートすると/media以下にsf_フォルダ名が現れてアクセスできるようになる。
VirtualBoxをタスクトレイに入れて管理するにはVBoxHeadlessTrayがおすすめ。ヘッドレスモードやシャットダウンとなどの操作もタスクトレイで行えるのでとてもいい。
ついでにNode.jsの環境も作ってみる
Node.jsは直接入れるよりもバージョン管理するツールから入れるのがいいらしいので、naveかnvmを使う事にした。
naveは何かインストールが面倒だったので、nvmを使う事にした。
nvmは自動でnpmもインストールしてくれるので便利。
azu@ubuntu:~$ sudo apt-get install build-essential libssl-dev git-core azu@ubuntu:~$ sudo apt-get install curl # 必要なものを先にインストールしておく azu@ubuntu:~$ git clone git://github.com/creationix/nvm.git ~/.nvm azu@ubuntu:~$ cd .nvm/ azu@ubuntu:~$ bash ./nvm.sh azu@ubuntu:~$ nvm install latest # 最新のnodeをインストールする azu@ubuntu:~$ node -v v0.4.5
毎回 bash ./nvm.sh 実行するのは手間なので。
.bashrc を編集して、
. ~/.node/nvm.sh nvm use latest
を書き加えておきます。
- SummerWind – Node.jsの管理はnvmで
- naveでNode.jsのバージョン管理&イベントループ詳説(1/3)- @IT
- Amazon EC2 MicroインスタンスのAmazon LinuxにNodeをインストールした – 自分の感受性くらい
雑記
VMWareはスタートアップにいろんなもの生やすし、ダウンロードも登録必要で面倒なので、VMWareよりもVirtualBoxの方が好みでした。
目標としては、Cygwin HereみたくWindowsのエクスプローラー上のコンテキストメニューから、SSHクライアントを開いてそのときに同時に共有フォルダのsf_azu以下にある同じフォルダまで移動したいのだけど、お客様の中でよい方法をお知りな方がいらしゃったらお願いします。
e.g)
windows : C:\Users\azu\Downloads のコンテキストメニューからSSHクライアントを開く
Ubuntu : 渡されたパスを元に /media/sf_azu/Downloads をカレントディレクトリにする
SSHクライアントのマクロみたいので実現するのかな。

Pingback: Windowsでのコマンドライン環境はConsole2+nyaosで | Web scratch
Pingback: GithubにあるjQueryのコードをビルドする方法 | Web scratch