Visual Studio CodeでRemote SSHしようとしたら意味不明なエラーが出てつまずいた

Windowsの「Visual Studio Code」に「Remote - SSH」というExtentionをインストールして、リモートのLinux上のファイルを編集しようとしたら意味不明なエラーが出ました。

[14:32:37.168] Log Level: 2
[14:32:37.170] remote-ssh@0.56.0
[14:32:37.170] win32 x64
[14:32:37.172] SSH Resolver called for "ssh-remote+接続したいLinuxマシンのホスト名", attempt 1
[14:32:37.172] SSH Resolver called for host: 接続したいLinuxマシンのホスト名
[14:32:37.172] Setting up SSH remote "接続したいLinuxマシンのホスト名"
[14:32:37.188] Using commit id "e5a624b788d92b8d34d1392e4c4d9789406efe8f" and quality "stable" for server
[14:32:37.189] Install and start server if needed
[14:33:01.718] getPlatformForHost was canceled
[14:33:01.722] Resolver error: Error: Connecting was canceled
    at Function.Canceled (c:\Users\xxx\.vscode\extensions\ms-vscode-remote.remote-ssh-0.56.0\out\extension.js:1:94623)
    at c:\Users\xxx\.vscode\extensions\ms-vscode-remote.remote-ssh-0.56.0\out\extension.js:127:104886
    at processTicksAndRejections (internal/process/task_queues.js:94:5)
    at async Object.t.withShowDetailsEvent (c:\Users\xxx\.vscode\extensions\ms-vscode-remote.remote-ssh-0.56.0\out\extension.js:127:110096)
    at async Object.t.resolve (c:\Users\xxx\.vscode\extensions\ms-vscode-remote.remote-ssh-0.56.0\out\extension.js:127:108158)
    at async c:\Users\xxx\.vscode\extensions\ms-vscode-remote.remote-ssh-0.56.0\out\extension.js:127:143767
[14:33:01.724] ------

解決策

接続先のOSを指定する必要がありました。 qiita.com

以下の設定をsettings.jsonに追記したら接続できました。

"remote.SSH.remotePlatform": {
    "接続したいLinuxマシンのホスト名": "linux"
}

後で気づきましたが、接続時にひっそりと以下の選択肢が表示されていました。モーダルダイアログで表示されないので非常に気づきにくいです。 ここでLinuxなどをクリックすれば、対応する設定がsettings.jsonに追記されます。

というかなんでOSの種類が事前に必要なのか全く意味が分かりませんね。sshで接続した後でOSの種類を調べるのは容易だと思います・・・。

ちなみに、他に気になった点として、Visual Studio CodeのRemote SSHで接続すると、sshのセッションだけでなく 接続先のホスト上で勝手にnodeのプロセスが立ち上げられます。nodeが必要ということはAlpine LinuxなんかのミニマムなLinuxでは動作しないでしょう。 なぜかVisual Studio Codeはローカルではなくホスト側でExtentionを実行する仕様らしいです。Extentionの管理画面もローカルとホストが分けられています。なんでそんな仕様なんだ・・・。

それと、このnodeプロセスが結構メモリを消費するので、スペックの低い最小構成のマシンにRemote SSHするのも難しそうです。

というわけで「Visual Studio Code」で「Remote - SSH」を使ってみましたが、私の期待したものとはちょっと違っていました。結局代わりに「SSH FS」というExtentionを使用することにしました。 qiita.com