2019年10月27日

VSCode のRemote DevelopmentでInstallできなかった話

前置き


VSCodeのRemote DevelopmentでWindows 10からLinuxへ接続できるようになり、開発が捗るので、とても便利です。
便利なのですが、リモートサーバーに接続する段階で、うまくつながらなかった場合のトラブルシューティングがとても大変なので、引っかかったトラップを紹介します。

SSHが起動するか

Install(接続中)のままつながらなかった場合、そもそもSSHが起動するかをまず確認してみましょう。ターミナルの中で以下のコマンドを実行しましょう。
ssh -V
この時に、コマンドが見つからないとなったら、SSHが正常に機能していません。

まずはOpenSSHクライアントが導入されていることを確認します。
https://www.onebizlife.com/windows10-ssh-client-1980

コマンドプロンプトからはSSHのパスが通っているが、VSCodeからは動かないという場合、launch.json のenvでPATHの環境変数を上書きしている可能性があるでしょう。
https://garafu.blogspot.com/2017/05/vscode-environment-variables.html

SSHのバージョンが正しいか

これは中々わからなくてしんどかったです。
以下のようなエラーが出た場合、利用しているSSHクライアントが正しいものかを確認します。
プロセスが、存在しないパイプに書き込もうとしました。
TELEMETRY: {"eventName":"resolver","properties":{"outcome":"failure","reason":"UnparsableOutput","askedPw":"0","askedPassphrase":"0","asked2fa":"0","askedHostKey":"0","gotUnrecognizedPrompt":"0","remoteInConfigFile":"1"},"measures":{"resolveAttempts":1,"retries":1}}
以下の記事で、なんとなくSSHクライアントの問題ぽいなと当たりはつけたのですが、環境や現象は異なっております。
https://qiita.com/CoffeeJunJun/items/29dda4b60a60bde3b771
https://github.com/microsoft/vscode-remote-release/issues/1678

この場合、ssh -V の結果を確認してみてください。私の環境では以下のようになりました。
OpenSSH_7.5p1, OpenSSL 1.0.2d 9 Jul 2015

これは、Windows10に正式リリースされたSSHクライアントではなく、前段としてPowershellチームが移植してくれたWindows向けOpenSSHを利用していたのでこのバージョンになりました。
https://github.com/PowerShell/Win32-OpenSSH/releases

Windows10の標準クライアントであれば、以下のような出力になります。
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

おそらく、SSHクライアントのバージョンに依存するのだと思われます。
公式見ても要求仕様はよくわからないけど、たぶんSSL libがVer.2系ならいけるのでしょう。

他にも、git for windowsなどのSSHが同梱されているアプリにパスを通していて、OS標準のSSHが使われていないなどであれば、バージョン表示が異なることでしょう。
どのSSHが利用されているか確認し、OS標準のものではなかった場合には切り替えましょう。

Windowsでは、whereコマンドというLinuxにおけるwhichのようにパスを確認するコマンドがあります。

where ssh.exe

OSのパスは以下です。これ以外のSSHクライアントを利用していたら、パスを変えるなり、該当パスのssh.exeをリネームするなりして、OS標準のSSHクライアントが利用できるようにしましょう。
C:\Windows\System32\OpenSSH\ssh.exe


TIPS:VSCodeで日本語化がうまくいかないとき

前置き Visual Studio Codeで拡張機能「 Japanese Language Pack for Visual Studio Code 」を入れたら日本語になりますよね。 でも、「 Remote Development 」で色々な環境を日本語化してると、偶に...