Visual Studio Code で Remote SSH する。

# VS Code で Remote SSH
VS Code で Remote SSH する方法を記載しておきます。

## はじめに
本家のチュートリアルは以下のサイトにあります。

- 概要
   - [Developing on Remote Machines using SSH and Visual Studio Code](https://code.visualstudio.com/docs/remote/ssh)
- チュートリアル
   - [Connect over SSH with Visual Studio Code](https://code.visualstudio.com/remote-tutorials/ssh/getting-started)
   - [Remote Development with Visual Studio Code Tutorials](https://code.visualstudio.com/docs/remote/remote-tutorials)

## 要約
![IMG_0106.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/db4f42b6-f30b-9105-a4a3-0e3fb3763d5e.jpeg)

## やったこと
### 1. VS Code に Remote SSH の拡張機能をインストール  
拡張機能のボタンをクリックし、Remoteと入力。表示された Remote-SSH をインストールする。
![スクリーンショット 2020-03-02 12.45.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/bc5e353a-3568-e6b5-32f0-90eae05ed644.png)  
すると、以下のようなマークが左下に「><」が表示されることを確認する。  
![スクリーンショット 2020-03-02 12.53.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/37a325aa-4011-1049-f4a2-8027b0545433.png)
### 2. VS Code を利用しているマシンで SSH Key を作成
ssh-keygen を使って、公開鍵と秘密鍵のペアを作成する。 
今回は" ssh-keygen -t rsa -b 2048 -f ~/.ssh/kazuma_konosuba"を実行し、公開鍵と秘密鍵を作成。
![スクリーンショット 2020-03-02 19.27.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/1463ca6b-d18b-f1dc-da36-294d3631d9a7.png)

### 3. 接続先サーバーの /home/user名/.ssh/authorized_keys に公開鍵の内容を入力
接続先に公開鍵を登録する。authorized_keys は権限変更しておく。
（権限変更しないと ssh 実行時にログインできない。log は /var/log/secure あたりに吐かれる）
![スクリーンショット 2020-03-02 20.00.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/405f71dc-7a1d-919b-c095-f41b767676a2.png)

### 4. VS Code を利用しているマシンの ssh config に ssh 接続情報を追加
/Users/ユーザ名/.ssh/config に以下の内容を追加する。

```bash:config
# Host kazuma@aqua-konosuba
Host kazuma
  HostName 127.0.0.1
  User kazuma
  Port 2222
  UserKnownHostsFile /dev/null
  PreferredAuthentications publickey
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ユーザ名/.ssh/kazuma_konosuba
  IdentitiesOnly yes
  LogLevel FATAL
```
[追記]VS Code で ssh-add 秘密鍵へのパスをしないと接続できない

```bash:
$ ssh-agent
$ ssh-add -l
The agent has no identities.
$ ssh-add -K /Users/ユーザ名/.ssh/kazuma_konosuba
$ ssh-add -l
2048 SHA256:XXXXXXXXXXXXXXXXX ユーザ名＠VS Code 利用しているマシン名(RSA)
```

### 5. VS Code で SSH 接続する

0. VS Code の左下の「><」をクリック  
![スクリーンショット 2020-03-02 12.53.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/37a325aa-4011-1049-f4a2-8027b0545433.png)
0. Connect to Host. をクリック  
![スクリーンショット 2020-03-02 20.11.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/3e863cea-6050-063e-bf98-61b7941148ec.png)
0. SSH接続情報に記載した Host 名をクリック
![スクリーンショット 2020-03-02 20.11.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/65779937-ac1f-3f90-41cc-7992289f2392.png)
0. 新しく VS Code のウィンドウが立ち上がる。左下に接続先のホスト名が表示される。
![スクリーンショット 2020-03-02 20.11.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/b5ec201b-d9a6-295d-e677-fc667c4e15fd.png)
0. あとはお好みでリモート先の VS Code で使う拡張機能をインストールする
![スクリーンショット 2020-03-02 20.12.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54900/5c47760e-3ab3-a17c-0b23-0d2172dc3148.png)

## おわりに
いくつかの罠があったので、はまったところと調査方法を箇条書きで。

 - config の hostname に @ がつくと VS Code の Remote-SSH は使えない。  
例えば kazuma@aqua-konosuba みたいな名前にしていると、VS Code ではうまくいかない。  
なお、ssh コマンドでは接続できる模様。 
 - ssh で接続でうまくいかなかったときは、 ssh -vvv ホスト名 で接続しに行くと詳細な情報が表示される。
 - サーバー側では、/var/log/secure に ssh 接続に関する情報が表示される。
 - Vagrant で立ち上げたマシンが利用している port 番号は Vagrant port で確認できる。

以上です。