vagrant
VirtualBox
Windows10
ubuntu16.04

Windows10 + Vagrant + Ubuntu16.04 で環境構築

Ⅰ. 目的

LANからアクセス可能なUbuntu16.04の仮想環境を作成します。
仮想マシンへのログインは公開鍵認証を用い、パスワード認証は禁止とします。

Ⅱ. 環境

  • Windows10
  • Vagrant 1.9.3
  • VirtualBox 5.1.18
  • Ubuntu 16.04

Ⅲ. 使用するツールのインストール

1. VirtualBox

Download VirtualBoxでインストーラを取得します。
Windows環境にインストールするので Windows hosts のリンクをクリックし、インストーラをダウンロードします。

2. Vagrant

Download Vagrantでインストーラを取得します。
Windows環境にインストールするので「Windows」ラベルの下にある Universal (32 and 64-bit) のリンクをクリックし、インストーラをダウンロードします。

3. PuTTY

Download PuTTYでインストーラを取得します。
Windows環境にインストールするので「MSI (‘Windows Installer’)」ラベルの下にあるインストーラ(32bit,64bitいずれかを選択)のリンクをクリックし、インストーラをダウンロードします。

Ⅳ. Vagrant環境構築

1. Vagrant用のフォルダを作成

Vagrant用に任意のフォルダを作成します。
このフォルダにはVagrantの設定ファイルなどを格納します。
今回は C:\vagrant フォルダを作成しました。

2. UbuntuのBoxの入手と初期化

ⅰ. 作成したフォルダに移動してコマンドプロンプトを起動
ⅱ. Vagrantの初期化

以下のコマンドで行います。

C:\vagrant> vagrant init bento/ubuntu-16.04

Boxファイルは chef/bento で公開されているものを使用させていただきます。

ⅲ. BoxのダウンロードとVagrant起動

以下のコマンドで行います。

C:\vagrant> vagrant up --provider virtualbox

イメージのダウンロードと仮想マシンの起動が行われます。

3. 作成した環境にSSH接続

コマンドプロンプト上で vagrant ssh コマンドを打つと、以下の画面が表示されます。

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/vagrant/.vagrant/machines/default/virtualbox/private_key

puttyなどで上記の接続先にアクセスし、ログインできることを確認します。
初期設定では username, password ともに vagrant です。

4. 設定ファイルの編集

起動を確認後、以下のコマンドで仮想マシンを止めて設定ファイルを編集します。

C:\vagrant> vagrant halt

ここまでの作業で作成し、コマンドプロンプトを動かしていた場所 C:\vagrant フォルダ内に Vagrantfile というファイルがあるので、メモ帳などで開きます。

ⅰ. ネットワーク設定(固定IPアドレス割当)

public_network の行のコメントアウトを外すことで、ホスト以外からもアクセスすることができます。
コメントアウトを外すだけだと、DHCPでIPアドレスが変更されてしまうので、固定IPを設定しています。
今回は 192.168.1.111 を仮想マシンに割り当てることとします。

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
   config.vm.network "public_network", ip: "192.168.1.111"
ⅱ. VirtualBoxメモリ、CPU数変更

メモリとCPU数も変更します。
vb.memory がメモリ、 vb.cpus がCPU数です。

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
   config.vm.provider "virtualbox" do |vb| ← ココのコメントアウトを解除
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
     vb.memory = "2048"
     vb.cpus = "2"
   end ← ココのコメントアウトも解除

Ⅴ. Ubuntuの設定変更

1. ユーザを作成

vagrant ユーザでログインするのは好ましくないので、ユーザを作ります。
以下のコマンドを入力し、パスワードなど諸々の情報を入れてユーザを作成します。

$ sudo adduser user_name

2. sudo 権限付与

以下のコマンドで作成したユーザにsudo権限を付与します。

$ gpasswd -a user_name sudo

3. 公開鍵ログイン環境構築

ⅰ. .sshフォルダ作成

以下のコマンドでユーザのホームディレクトリの配下に .ssh フォルダを作成し、アクセス権を変更します。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
ⅱ. authorized_keys作成

以下のコマンドで authorized_keys ファイルを作成し、アクセス権変更します。

$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
ⅲ. 鍵ペア作成

PuTTYgen で鍵ペアを作成します。
大まかな流れは以下です。

  1. 鍵のbit数を選択
  2. アプリの上部の四角い枠内でグリグリとマウスカーソルを動かす
  3. プログレスバーが100%まで行くと鍵生成が完了
  4. さっきまでグリグリしていたところに公開鍵が表示されるので、コピーしてメモ帳などに貼り付ける

詳細な作成方法はPuTTYgenで公開鍵/秘密鍵を作成するをご参照ください。
(丁寧な説明をしてくださっている、外部サイトに飛びます)

ⅳ. authorized_keys編集

以下のコマンドで authorized_keys を編集します。

$ vi /home/user_name/.ssh/authorized_keys

i でインサートモードに入り、右クリックで貼り付けて :wq で保存して閉じます。

ⅴ. sshd設定の変更(rootログイン禁止、公開鍵認証許可)

/etc/ssh/sshd_config に設定が記載されています。
編集前には以下のようにしてバックアップを取ります。

$ cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.orig

以下のコマンドで設定ファイルを編集します。

$ sudo vi /etc/ssh/sshd_config

以下の行を編集し、:wqで保存して閉じます。
PermitRootLogin no ← rootログイン禁止
PubkeyAuthentication yes ← 公開鍵認証許可

編集完了後、以下のコマンドでssh再起動をします。

$ sudo service ssh restart
ⅵ. puTTyで鍵認証を設定

PuTTYのログインで公開鍵を使う設定を行います。
大まかな流れは以下です。

  1. PuTTY のSSH認証のオプションに秘密鍵を登録する
  2. Pagent に登録する(登録すると便利)

詳細な設定方法は公開鍵認証によるSSH接続 - PuTTYの使い方をご参照ください。
(丁寧な説明をしてくださっている、外部サイトに飛びます)

ⅶ. sshd設定変更(パスワードログインの禁止)

鍵認証によるログインに成功後、以下のコマンドで設定ファイルを編集します。

$ sudo vi /etc/ssh/sshd_config

以下の行を編集し、:wqで保存して閉じます。
PasswordAuthentication no ← パスワード認証禁止

編集完了後、以下のコマンドでssh再起動をします。

$ sudo service ssh restart

Ⅵ. トラブルシューティング

1. vagrant up 時に guest additions 警告が表示される

vagrant-vbguestを使用して対応します。

ⅰ. インストール

以下のコマンドでインストールします。

C:\vagrant> vagrant plugin install vagrant-vbguest
ⅱ. 使用方法

以下のコマンドを実行します。

C:\vagrant> vagrant vbguest

コンソールに情報が表示され、しばらくするとguest additionsの更新が完了します。
更新完了ののち、以下のコマンドで再起動を行ってエラーが起きないことを確認します。

C:\vagrant> vagrant halt
C:\vagrant> vagrant up

Ⅶ. 参考にさせていただいたリンク