Ⅰ. 目的
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
で鍵ペアを作成します。
大まかな流れは以下です。
- 鍵のbit数を選択
- アプリの上部の四角い枠内でグリグリとマウスカーソルを動かす
- プログレスバーが100%まで行くと鍵生成が完了
- さっきまでグリグリしていたところに公開鍵が表示されるので、コピーしてメモ帳などに貼り付ける
詳細な作成方法は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
のログインで公開鍵を使う設定を行います。
大まかな流れは以下です。
-
PuTTY
のSSH認証のオプションに秘密鍵を登録する -
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]
(https://github.com/dotless-de/vagrant-vbguest)を使用して対応します。
ⅰ. インストール
以下のコマンドでインストールします。
C:\vagrant> vagrant plugin install vagrant-vbguest
ⅱ. 使用方法
以下のコマンドを実行します。
C:\vagrant> vagrant vbguest
コンソールに情報が表示され、しばらくするとguest additions
の更新が完了します。
更新完了ののち、以下のコマンドで再起動を行ってエラーが起きないことを確認します。
C:\vagrant> vagrant halt
C:\vagrant> vagrant up