Visual Studio CodeでRemote Developmentを使ってみた

# はじめに

Visual Studio CodeでRemote Development機能を使って、LAMP環境で直接コーディングしたかったので、セットアップ方法をまとめてみた。
一部、うまく取れなかったのでサンプル画像がごちゃ混ぜになってますが、ご愛敬。

# 環境について
作業環境はこんなかんじ。VMのネットワークはカスタム(vmnet0)を使用。
通信の設定は仮想化基盤環境に合わせて設定してください。

![構成概要1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/a87a5535-ebc1-bcd3-d85f-7b5e4f156137.png)

<font color="red">※名前解決はhostsファイルで行っています。</font>

# セットアップ手順
0.事前準備
1.Windows OpenSSH Clientのインストール
2.Visual Studio Code (insiders)のインストール
3.VSCode拡張機能 "Remote Development"のインストール
4.Remote DevelopmentのSSH config設定を行う
5.Remote Developmentを使って、CentOSサーバに接続する
6.VS Code Server上にテストファイル[phpinfo.php]を作成する
7.PHP IntelliSenseとPHP Debugをインストールする

## 0.事前準備
- CentOS上にWindows PCに使用しているユーザアカウント(以降 VSCodeServerアカウントとする)を作成します。
- VSCodeServerアカウントがファイルを作成・編集できるようにグループ権限もしくはディレクトリ権限を調整します。
- OpenSSH-Serverなどリモートログオンを提供するサービスを導入します。

## 1.Windows OpenSSH Clientのインストール

1. Windows PowerShell ISEを管理者として実行
<font color="red">※管理者権限が不足していると警告され、先に進めません。</font>
![windows openssh install 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/93eec942-8b14-2585-7bff-888e7c0c1fa1.png)

2. 動作確認
コマンドプロンプトなどからVSCode ServerにするCentOSにssh接続を試みてください。
<font color="red">※このサンプルではid_rsaが見当たらないよって怒られてますが、無視してください。</font>
![windows openssh install 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/3e80b553-0d1e-0bab-8188-01a83b2033d1.png)



## 2.Visual Studio Code (insiders)のインストール

1. Microsoft社からVisual Studio Code insiders (https://code.visualstudio.com/insiders/) を入手し、インストールを実行します。
<font color="red">※ダウンロードとインストールに際しては調整が必要なものはないので割愛します。</font>

## 3.VSCode拡張機能 "Remote Development"のインストール

1. powershellコマンドを用いてRemote Developmentをインストールします。
![remotedevelopment拡張機能パックインストール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/8f2cf8c6-09c9-3cf8-0845-9e85c057960a.png)


## 4.Remote DevelopmentのSSH config設定を行う

1. VS Codeを起動します。

2. Remode Developmentの「接続」アイコンをクリックします。

![vscode-config-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/b7e157ba-0b35-81f6-d530-d7180163dc7d.png)

3. [Remote-SSH: Open Configuration File...]を選択します
![vscode-config-2a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/52f64644-9f31-9ea7-c77e-8707781ce71a.png)

4. ユーザプロファイルに接続設定を保存したいので[%UserProfile%\.ssh\config]をSSH設定ファイルの保存先に指定します。
![vscode-config-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/90cf42a9-66e6-578b-b20a-67dd441a849b.png)

5. VS Code Serverに接続するための設定ファイルを記述します。
![vscode-config-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/af6fde77-3f03-79f6-4c64-c9d17158bf18.png)


## 5.Remote Developmentを使って、CentOSサーバに接続する

1. Remote Developmentの接続アイコンをクリックします。

2. [Remote-SSH: Connect to Host...]を選択します。
![vscode接続1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/08352f89-c3fb-7d52-2127-626fbccffb52.png)

3. 作成済みのSSH接続ホストを指定します。
![vscode接続2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/2844fa2a-fa67-f373-db5e-421f791412a6.png)

4. 接続先情報を選択します。ここでは相手がCentOsなので[Linux]を選択しています。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/60ef0304-65cf-961a-d715-f116a81a8a08.png)

※初めてSSH通信する場合、フィンガープリントを取得するか聞かれます。[Continue]を選択します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/5d862425-bbf0-f2df-5888-060e052acada.png)

5. VS Code Server上のユーザ認証を要求されるため、パスワードを入力し、[Enter]キーを押下します。
![vscode-remote接続2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/f633f3e8-bc7f-fd14-fadf-afc093279535.png)

6. 認証が完了すると、VS Code Serverのダウンロードとセットアップが行われます。
![vscode-remote接続3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/6adcc9cd-8a65-6c85-57a1-5de459ab524c.png)

7. しばらくすると、VS Code Serverのセットアップが終了し、Remote Developmentの接続が完了します。
![vscode-remote接続4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/d60af919-b9ea-e4c1-faaa-9a8875b4af7f.png)


## 6.VS Code Server上にテストファイル[phpinfo.php]を作成する

1. Explorerアイコンをクリックし、[Open Folder]ボタンを押下します。
![vscode-remote接続5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/b8ac15b9-9355-f5c9-ae5b-d0a968777684.png)

2. VSCodeServerアカウントのデフォルトパスが表示されます。PHPファイルを作成・編集したいパスを入力し、[OK]ボタンを押下します。
<font color="red">※必要に応じてドキュメントルートなどを指定してください。</font>
![vscode接続4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/666b9938-7ced-9723-ea33-e17ec55aca77.png)

3. 再度VSCodeServerアカウントの認証を要求されるため、パスワードを入力し、[Enter]キーを押下します。
![vscode接続5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/a0948e0a-9567-3301-39ed-3445f7a1d1b2.png)

4. Explorerのファイル一覧にCentOSサーバ上のファイルパスに含まれるファイルが表示されます。
![vscode接続6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/f183b0a3-b1fd-4b08-6782-9ceab4603686.png)

5. テストファイル[phpinfo.php]を作成するため、Explorer上でコンテキストメニューを表示し、[New File]を選択します。
![vscode接続7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/7431454e-ec0c-a8e7-85d1-5f016ca5ec06.png)

6. テストファイルを作成し、保存します。
![vscode接続8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/15253226-4a1e-1353-5b9f-ac2909a8cc55.png)

7. ChromeなどでVSCodeServerにファイルが作られていることを確認します。
![vscode接続9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/4b9020d8-6940-e6b3-8457-f455cf209edc.png)


## 7.PHP IntelliSenseとPHP Debugをインストールする
VS CodeのセットアップのついでにPHP開発に便利な拡張機能 PHP IntelliSenseとPHP Debugをインストールします。

### 7.1.PHP IntelliSenseをインストールする

1. Remote Developmentを使ってVS Code Serverに接続します。

2. Extensionsアイコンをクリックし、拡張機能[PHP IntelliSense]を検索します。

3. 右側に表示される[Install on SSH : {servername}]ボタンを押下します。

2. Extensionsアイコンをクリックし、拡張機能[PHP IntelliSense]を検索します。

3. 右側に表示される[Install on SSH : {servername}]ボタンを押下します。
![PHP Intellisense Install1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/2fa7dda8-7845-77c6-fc6b-4b5c3c5aac64.png)

4. PHP IntelliSenseのインストールが完了すると、ボタンが[Reload Required]に変わります。[Reload Required]ボタンを押下し、VS Code Serverに再接続してください。
![PHP Intellisense Install2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/5f7eeed5-7aa1-3054-5d5a-2625acb7ce8c.png)


### 7.2.PHP Debugをインストールする

1. Remote Developmentを使ってVS Code Serverに接続します。

2. Extensionsアイコンをクリックし、拡張機能[PHP Debug]を検索します。

3. 右側に表示される[Install on SSH : {servername}]ボタンを押下します。
![PHP Debug Install 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/81527622-f651-6f3b-98e2-22158c1eac03.png)

4. PHP IntelliSenseのインストールが完了すると、ボタンが[Reload Required]に変わります。[Reload Required]ボタンを押下し、VS Code Serverに再接続してください。
![PHP Debug Install 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/6974ff92-d73a-1958-5ebd-9e9361c8912d.png)


# おまけ1.id_rsaファイルの発行とVS Code Serverへの転送
※id_rsaを発行しなくてもpasswordログインは可能です。セキュリティ強度を考えると実装したほうがいい...とされます。

1. VS Codeを実行するマシン側でrsaキーを発行します。
![id_rsaキー発行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/ca30249f-a8f8-c017-0b46-732e01030ca9.png)

2.rsaキーをVS Code Serverにコピーし、authorized_keyに変換。
![id_rsaキー発行2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/1d5290e6-8184-4c8e-23fd-d9e74bf95b0a.png)

3.iraキーを用意することでRemote Development接続するときはpassphraseを使った認証に切り替わります。
![id_rsaキーを使った接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184939/881dac63-84fd-99cb-9475-9d91b706715f.png)




# 参考
- https://docs.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
- https://code.visualstudio.com/docs/remote/remote-overview
- https://qiita.com/suzuki_sh/items/245b9817536eba808842
- https://qiita.com/print_hello/items/ae14cb3989b0806a63c7