VSCodeで"Remote - SSH"拡張機能を試してみる

#**はじめに**
今日は、VSCodeで"Remote - SSH"拡張機能を試してみたいと思います。目標は、レンタルサーバーにSSH接続できるようになる事ですが、とりあえず今回は以前構築済みのCentOS8に接続できるところまで試したいと思います。

#**環境周りの情報**
**SSH接続元：**

* Windows10仮想マシン
* VSCodeインストール済み

※詳細は以前投稿した下記を参照して下さい

https://qiita.com/829yasubee/items/e556293639ae5bcad6cb

**SSH接続先：**

* CentOS8仮想マシン
* sshd設定済み
* 公開鍵認証設定済み

※以前投稿した下記を参考に設定しました

https://qiita.com/829yasubee/items/dc7f976b760c8c3bc9a1

https://qiita.com/829yasubee/items/c2d1ef097340e31f8bbc

#**環境構築手順**

###**"Remote - SSH"拡張機能のインストール**
VSCodeに"Remote - SSH"拡張機能をインストールします。
左側タブで[拡張機能]タブに切り替え、"Remote"というキーワードで検索。すると、検索結果に"Remote - SSH"拡張機能が現れるので、[インストール]ボタンをクリック。
![スクリーンショット1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/28367271-ca2f-4d0e-56aa-0c366a6cfe03.png)

:::note info
"Remote -SSH: Editing Configuration Files"拡張機能も合わせてインストールされます。これは後述の"Remote - SSH"拡張機能のConfig設定において、Configファイル編集時に入力補完してくれる役割を担ってくれます。
:::

インストールが完了すると、左側タブに[リモート エクスプローラー]タブが出現します。
![スクリーンショット2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/4104f098-290e-cabb-fa3f-91439b2b3283.png)

###**"Remote - SSH"拡張機能のConfig設定**
VSCodeの左側タブで[Remote- SSH]タブに切り替えてみると、こんな感じの画面。左下には、リモートマシン接続時に使うボタンが追加されています。SSH TARGETSにはまだリモートマシンが何も表示されていませんがご安心下さい。それをこれから設定していきますので。
![スクリーンショット3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/74ce4004-52b5-1a88-6d65-458b28e3af41.png)
それではConfigファイルを作成していきます。
まず、SSH TARGETSの横にある[⚙]ボタンをクリック。画面上部に表示される[Select SSH configuration file to update]から"C:\Users\\*{ユーザー名}*\\.ssh\config"を選択。
![スクリーンショット4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/c2048f01-00c5-6cee-aeb7-318c8634778b.png)

:::note info
ファイル名を"config"以外にしたり、パスを別の場所にする事もできるようですが、そうするとVSCodeの"Remote.SSH: Config File"設定にConfigファイルの絶対パスを設定する必要があります。また、Configファイル編集時の入力補完が機能しなくなるようですのでご注意下さい。
:::

すると、Configファイルのテンプレートが初期表示されます。
![スクリーンショット5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/b53b9c79-88a7-bf4c-ecd4-3c5583846e4f.png)
リモートホストにパスワード認証でSSH接続する場合はこの設定で十分かと思いますが、私の場合は公開鍵認証でSSH接続したいので、設定項目を追加してConfigファイルの編集を完成させます。ポート番号もデフォルトから変更している方は追加設定が必要です。
ターゲットが出現しました。今回、ターゲットの名前は"Test"にしましたが、名前はご自由にどうぞ。
![スクリーンショット6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/2468966e-598e-87cd-5808-d8c99fc4d2e1.png)
一応、各設定項目の意味を載せておきます。

|項目|意味|
|:-|:-|
|Host|SSH TARGETSに表示される名前|
|HostName|SSH接続先のホスト名またはIPアドレス|
|User|SSH接続に使用するユーザー名|
|Port|SSH接続に使用するポート番号|
|IdentityFile|SSH接続に使用する秘密鍵ファイルパス|

:::note warn
IdentityFile項目の設定ですが、私が試した限りでは絶対パスじゃないと繋がりませんでした。ファイル名だけや相対パスではエラーとなりました。
:::

###**リモート接続の確認**
それでは接続できるか試してみます。
該当のSSH TARGET、今回は"Test"の右側にある[Connect to Host in New Window]ボタンをクリック。
![スクリーンショット7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/94e11a04-b722-bd7f-85fc-77ff5c7c9541.png)
すると、VSCodeが別ウィンドウで表示され、画面上部に[Select the platform of the remote host "Test"]が表示されるので、[Linux]を選択。
![スクリーンショット8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/72ffcab0-e734-eceb-cf89-15fceecf60b5.png)
繋がらない・・・
[Learn More]ボタンをクリック。
![スクリーンショット9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/194f9d35-9d1b-0624-1a09-c1f8641b4e80.png)
ブラウザが起動し、このようなMicrosoftのVisual Studio Code公式サイトが表示されるので見てみたところ、どうやらOpenSSH compatible SSH clientをインストールしていないのが原因っぽい。今まではSSHクライアントソフトを別途インストールして使っていたので、こういうのはあんまり気にしていなかった。
![スクリーンショット10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/baf0467b-5222-f893-e588-d05bfd7b0db2.png)
[OpenSSH compatible SSH client]リンクをクリックしてみる。
私の環境の条件に合致するのは一番上なので、[Windows OpenSSH Client]リンクをクリック。
![スクリーンショット11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/a273cd0b-6a47-694d-578f-518e0ff12755.png)
このような画面が表示されるので、記載されている手順に従ってOpenSSH Clinetだけインストール。私の場合、OpenSSH Serverは特に必要ないので。
![スクリーンショット12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/44f37158-8206-e891-c0fc-7d5ee2df662f.png)
インストールできたので、再度、接続できるか試してみます。
よし！一歩前進！フィンガープリントが表示されたので"Continue"を選択。
![スクリーンショット13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/3830a8cf-5714-ddae-3518-68cf46f47496.png)
別ウィンドウでVSCodeが立ち上がり、ターミナルに接続先が表示され、無事つながりました！もう、別のSSHクライアントソフトは要らないですね。
![スクリーンショット14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/2c501538-d69b-e37c-a1de-8c34066babc4.png)

#**"Remote - SSH"拡張機能を少しだけ操作してみる**
試しに、リモート側のVSCodeでHomeディレクトリを開いてみます。
まず、[フォルダを開く]ボタンをクリック。
![スクリーンショット15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/e2da09d5-32b0-b382-efb5-f3518b3f5665.png)
すると、接続ユーザーのHomeディレクトリが既に入力された状態で表示されるので、[OK]ボタンをクリック。
![スクリーンショット16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/9501a260-afce-b801-03b4-71cdac64bee1.png)
信頼するかどうか聞かれるので、信頼するにすると、Homeディレクトリが表示されました。
![スクリーンショット17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/a73f489f-8b77-7a36-73ba-365ee647f3d9.png)
これはもしやと思い、ローカル側VSCodeから適当なファイルをリモート側VSCodeにドラッグ＆ドロップしてみたら、ファイルのアップロードが出来ました。もう、別のFTPクライアントソフトも要らないですね。いや〜、VSCode恐るべし・・・
![スクリーンショット18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/299f80b5-65df-2b39-9830-bcdccd46c08a.png)

#**リモート接続の切断**
リモート接続の切断は、リモート側VSCodeの左下の[><]みたいなボタンをクリックし、画面上部に表示されたメニューから[リモート接続を終了する]を選択。
![スクリーンショット19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/fb9f333d-d224-5098-bcfb-132e00ab2154.png)
ただ、これだとリモード側VSCodeのウィンドウが残ったままとなり、結局[×]ボタンをクリックする事になるので、最初から[×]ボタンをクリックして切断＆ウィンドウ閉じるをした方が早いと思います。

お疲れ様でした！