Windows10環境でLinux環境を構築する(WSL+ホームディレクトリ変更+SSH接続)

# 利用用途
リモートサーバーでの作業がメインだがたまにローカルで作業をした方が便利な時があり、そのための環境

# 背景
windows7環境からwindows10環境に移行した
windows7環境の時はvirtualbox+vagrantでローカルにubuntu環境を構築していた
windows10環境でもローカルにubuntu環境を構築したい

# 今回やること
1. WSL（Windows Subsystem for Linux）を使ってubuntu環境を構築
2. windows環境からファイルを操作できるようにホームディレクトリを変更する
3. SSHで接続できるように環境を構築する

# 環境変更に伴う pros and cons
## pros 
* 環境構築がvirtualboxより楽
* windowsを起動するとubuntuも既に起動している
    * SSH接続するときにわざわざVMを起動させなくてよい

## cons
* 同じ環境を複数構築するのは大変そう（まだちゃんと調べられていない）
    * バージョンやOSが違うならそんなに手間はなさそう

# 環境構築手順
## 1. WSL（Windows Subsystem for Linux）を使ってubuntu環境を構築

手順①「スタートボタン」を右クリック
手順②「アプリと機能」をクリック
手順③「プログラムと機能」をクリック
手順④「Windowsの機能の有効化または無効化」をクリック
手順⑤「Windows Subsystem for Linux」をクリック

![図1.png](https://qiita-image-store.s3.amazonaws.com/0/122979/4f1447b4-c6e2-d292-2c85-da62d0d57ec8.png)

手順⑥「microsoft store」を起動

![図3.png](https://qiita-image-store.s3.amazonaws.com/0/122979/fb1f607c-fd50-6f16-65b3-7a6a6d23ce04.png)

手順⑦「ubuntu」を検索
手順⑧ 任意のバージョンを選択してインストール
手順⑨ 初回起動で「ユーザ名」と「パスワード」を入力する

![図4.png](https://qiita-image-store.s3.amazonaws.com/0/122979/de8e203e-6f7a-b077-cc7a-bea18ce4d187.png)


## 2. windows環境からファイルを操作できるようにホームディレクトリを変更する
### なぜ必要？
windows環境からubuntu環境にアクセスする方法はあるが、windows環境からubuntu環境配下で何か変更してしまうとubuntu環境が壊れてしまう。
ubuntu環境にはwindows環境の固定ドライブがマウントされている。
「C:」ドライブなら「/mnt/c」でubuntu環境からwindows環境へアクセスできる。
そこで、ubuntu環境での作業をwindows環境下で行うことでwindows環境から操作できるようにする

### 前提
* windowsのDocumentsに「ubuntu」というディレクトリを作成し、そこを新ホームディレクトリとする
* `<username1>` :  **windows** のユーザ名
    * デスクトップまでのパスの例だと以下部分
    * `C:\Users\<username1>\Desktop`
* `<username2>` :  **ubuntu** のユーザ名（初回起動時に設定した名前）

### 手順
手順① ubuntuを起動して、デフォルトのホームディレクトリにあるファイル(設定ファイル)をwindows環境の新ホームディレクトリに移動する

```
$ cd
$ cp -p .* /mnt/c/Users/<username1>/Documents/ubuntu/
```

手順② 設定ファイルを開く

```
sudo vim /etc/passwd
```

手順③ 記載内容の変更

※変更前

```
<username2>:x:1000:1000:,,,:/home/<username2>:/bin/bash
```

※変更後

```
<username2>:x:1000:1000:,,,:/mnt/c/Users/<username1>/Documents/ubuntu:/bin/bash
```


手順④ ubuntuを再起動

## 3. rootユーザのパスワード設定
初期設定状態だとrootユーザに変更するためのパスワードが設定されていない。
初期設定で設定したユーザのパスワードでrootユーザに変更することもできるが、rootユーザのパスワードも設定しておく。

**初期設定したユーザのパスワードでrootユーザに変更**

```
sudo su -
```

**rootユーザのパスワード設定**
※上記コマンドでrootユーザに変更した後で設定する

```
passwd
```

今後は `su -` で設定したパスワードを入力するとrootユーザにログインできる

## 4. SSHで接続できるように環境を構築する
### なぜ必要？
正直なくても問題ないが、リモートサーバーに接続しているターミナルエミュレーターと同様に操作できるようにするため

### 手順
①ubuntu環境でopenssh-serverを立ち上げる
2018/07/16時点では既にインストールされているopenssh-serverをそのまま使うとエラーになるので、一度アンインストールする

```
sudo apt-get remove --purge openssh-server
sudo apt-get update --fix-missing
sudo apt-get install openssh-server
sudo service ssh start
```

②windows起動時にssh serverを自動起動するように設定する
以下ファイルを作成する。
※「password」は初回起動時に設定したパスワード

```{startssh.vbs}
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'echo 「password」 | sudo -S /etc/init.d/ssh start'",0
```

このファイルをwindowsのスタートアップフォルダに置く。

```
C:\Users\<username1>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
```



# 参考
- http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
- https://rcmdnk.com/blog/2018/04/27/computer-windows-network/
- http://anton0825.hatenablog.com/entry/2016/02/15/000000