LinuxにあるVSCodeの環境をWindowsのVSCodeから使いたいなーって。

# VSCode Remote Development
っていうのが最近(?)追加されましたね。
こいつで既にある環境をWindowsのVSCodeから使ってみたいです。
LinuxとWindowsは別々のパソコンに入ってる状態です。
デュアルブート環境とか、WSLとかじゃないです。

# VSCode Insiders版のインストール
クライアント側のみインストールするので、今回の場合は`Windows`側にのみインストールします。
接続先には、VSCodeからSSH接続した際に自動的にインストールされるようです。

# 環境
クライアント : Windows 10 Home
サーバー : Manjaro Linux 

## Linux
AURにあります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/a22fb867-daa1-7b49-a7b7-6a831c60ab20.png)

## Windows
[Download Visual Studio Code Insiders](https://code.visualstudio.com/insiders/)

# 拡張のインストール
Remote Developmentをインストールしたら他の拡張も同時にインストールされるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/5d561621-96f2-f749-b917-3b9dd974c484.png)


# Linux側のSSH設定

```
$ cd /etc/ssh
$ sudo vim sshd_config
```

ファイルの末尾に以下を記述する。

```text:sshd_config
# ----------------------------------
#           My Settings
# ----------------------------------
Port 22
PermitRootLogin no
PasswordAuthentication yes
# ----------------------------------
```

```
$ systemctl start sshd.service

$ systemctl status sshd.service
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-06-17 17:14:55 JST; 13s ago
 Main PID: 5504 (sshd)
    Tasks: 1 (limit: 4915)
   Memory: 1.6M
   CGroup: /system.slice/sshd.service
           └─5504 /usr/bin/sshd -D

Jun 17 17:14:55 hiroya-pc systemd[1]: Started OpenSSH Daemon.
Jun 17 17:14:55 hiroya-pc sshd[5504]: Server listening on 0.0.0.0 port 22.
Jun 17 17:14:55 hiroya-pc sshd[5504]: Server listening on :: port 22.

```

接続先(Linux側)のIPアドレスも調べておきましょう。IPアドレスは使用しているネットワークデバイスの`inet`の部分です。

```
$ ifconfig
```

# SSH ホストの追加
拡張をインストールすることにより、右側にアイコンが増えます。
`Configure`からSSH ホストを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/55e0ab38-3dff-60ae-0a96-a111d9e93b75.png)

- C:\Users\User\.ssh\config
- C:\ProgramData\ssh\ssh_config

が選べるようですが、`C:\ProgramData\ssh\ssh_config`にしておきました。

```text:ssh_config
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host Manjaro-Linux-Hiroya
    HostName 192.168.3.10
    User hiroya
```

ファイルを保存すると一覧に表示されるようになりました。

# 接続
## ログインターミナルの表示
Ctrl + Shift + Pでコマンドパレットを開き、`Remote-SSH:Settings`を開く。

`Remote.SSH:Show Login Terminal`っていうのがあるので、`Always reveal the SSH login terminal`にチェックをいれておく。
これをしないと、いつまで経っても表示が切り替わらなくて悩みました。パスワードいれなきゃダメなんだから当たり前ですよね。

## いざ
名前の右側に`Connect to Host in New Window`ってボタンがあるので、ポチ。
`Manjaro-Linux-Hiroya has fingerprint`って表示とハッシュが表示されるので`Continue`で。(認証鍵？なのかな？一回だけで次からは表示されなくなりました)

# 公開鍵と秘密鍵の生成
gitをインストールしておくと、`ssh-keygen.exe`があるようなので、それを使って生成します。
Remote Developmentでは、パスワードを頻繁に要求されるので、認証鍵の設定をした方がいいような気がします。
してください。

[VSCode公式の機能で、リモートサーバにSSHして編集する【Insiders Preview】](https://qiita.com/suzuki_sh/items/245b9817536eba808842)より引用。

>SSHパスワード認証で使うには？
VSCodeの設定でremote.SSH.showLoginTerminalを有効にする事で、パスワードを入力してログインができます。
ただしWindow Reload等のたびにパスワード入力を要求されるため、鍵認証を推奨します。

```
PS C:\Users\HIRO> ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\HIRO/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\HIRO/.ssh/id_rsa.
Your public key has been saved in C:\Users\HIRO/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:
The key's randomart image is:
+---[RSA 2048]----+
+----[SHA256]-----+
```

```text:ssh_config
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host Manjaro-Linux-Hiroya
    HostName 192.168.3.10
    User hiroya
    IdentityFile C:\Users\HIRO\.ssh/id_rsa
```


# 機能
## 接続先のターミナル
VSCodeの`New Terminal`をクリックすれば、ターミナルが起動できます。なので、コマンド操作もVSCode上でできるって感じですね。
zshのテーマとかもちゃんと適応されて表示されますね。すごい。
ただ、文字化けしてる(おそらくフォントが違う)のでそこだけ修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/2ea5fed5-c81a-ade2-526b-295a670031be.png)

## 作業フォルダを開く
FileからOpen Folder、コマンドパレットからOpen Folderどちらでも接続先のディレクトリの候補が表示され、いつもどおりに作業できます。

など。気づいたものは追記でまとめます。
まずは、拡張機能をインストールしてPythonとLatexの環境を整えようと思います。