Windows で VS Code Remote SSH を使う時のエラー対応
Windows 10 で VS Code の Remote SSH でリモートマシンへの接続が失敗すると Could not establish connection to "xx". というエラーダイアログが出ます。

エラーの要因はいろいろありますが、VS Code の出力に
[09:22:02.936] > Bad owner or permissions on C:\\Users\\kondoh/.ssh/config > [09:22:02.946] > プロセスが、存在しないパイプに書き込もうとしました。
のように Bad owner or permissions on .../.ssh/config というメッセージが出る場合は config ファイルのパーミッションが問題があります。Remote SSH の Config File はデフォルトで %USERPROFILE%\.ssh\config になっていて、同ファイルのパーミッションが 400 になっていない場合にこのエラーになるようです。.ssh はプライベートキーが格納されるディレクトリなので config ファイルのパスを変更する方法で回避してみました*1。
VS Code が提示してくる設定ファイル Remote-SSH:Open Configuration File.. の選択肢には、C:\ProgramData\ssh\ssh_config があります。

C:\ProgramData\ssh\ssh_config を選択するとパーミッションエラーでファイルが作成できません。C:\ProgramData 配下にファイルを作るのは管理者権限が必要です。
そこで C:\Users\<user>\.ssh\config で設定した内容を C:\ProgramData\ssh\ssh_config にコピーします*2。その後 C:\Users\<user>\.ssh\config は削除します*3。
これで、無事に VS Code Remote SSH でリモートのプロジェクトを開いて作業できるようになりました。
別の方法として、Remote-SSH:Open Configuration File.. で Settings specify a custom configuration file で Config File のパスを設定する方法もあります。ユーザプロファイル配下に Config File を作れば、UAC の許可は不要です。

この他、
- 踏み台サーバ経由で接続する場合 ProxyCommand にフルパスを指定する必要がある
- SSL 証明書 (pem ファイル) を使用する場合、これもユーザプロファイル配下に配置しないと
Permissions for 'xxx' are too open.のようなエラーになる
など、色々とハマりポイントがあります。