「やばい... VScodeのリモートデスクトップが使えなくなった...」を解決した備忘録

# はじめに
私がよく使っているエディタはVScodeです。
また、開発環境としては、Windows11にWSL2でUbuntuを導入して、VScodeのリモートデスクトップ機能でUbuntuにつなげて使っています。

そんなある日、いつものようにVScodeを起動し、自動でリモートデスクトップ機能を起動していると、以下のようなエラーが生じました。
ここから約2週間にわたる激闘が始まるのです。

## 1. リモートデスクトップ起動に必要なコマンドが存在しない！
<details><summary>エラー内容</summary>

```
[2024-11-29 18:53:01.858] Extension version: 0.88.4
[2024-11-29 18:53:01.859] L10N bundle: file:///c%3A/Users/kenta/.vscode/extensions/ms-vscode-remote.remote-wsl-0.88.4/l10n/bundle.l10n.ja.json
[2024-11-29 18:53:01.921] authorityHierarchy: wsl+Ubuntu
[2024-11-29 18:53:01.921] WSL extension activating for a local WSL instance
[2024-11-29 18:53:01.959] Resolving wsl+Ubuntu, resolveAttempt: 1
[2024-11-29 18:53:01.960] NodeExecServer run: C:\WINDOWS\System32\wsl.exe --status
[2024-11-29 18:53:02.076] WSL feature installed: true (wsl --status)
[2024-11-29 18:53:02.077] NodeExecServer run: C:\WINDOWS\System32\wsl.exe --list --verbose
[2024-11-29 18:53:02.190] 1 distros found
[2024-11-29 18:53:02.193] Starting VS Code Server inside WSL (wsl2)
[2024-11-29 18:53:02.193] Windows build: 26100. Multi distro support: available. WSL path support: enabled
[2024-11-29 18:53:02.193] Scriptless setup: false
[2024-11-29 18:53:02.194] No shell environment set or found for current distro.
[2024-11-29 18:53:02.402] WSL daemon log file: 
[2024-11-29 18:53:02.405] Probing if server is already installed: if [ -d ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813 ]; then printf 'install-found '; fi; if [ -f /etc/alpine-release ]; then printf 'alpine-'; fi; if [ -s ~/.vscode-server/bin/legacy-mode ]; then printf 'legacy-'; fi; uname -m;
[2024-11-29 18:53:02.405] NodeExecServer run: C:\WINDOWS\System32\wsl.exe -d Ubuntu -e sh -c if [ -d ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813 ]; then printf 'install-found '; fi; if [ -f /etc/alpine-release ]; then printf 'alpine-'; fi; if [ -s ~/.vscode-server/bin/legacy-mode ]; then printf 'legacy-'; fi; uname -m;
[2024-11-29 18:53:02.645] Probing result: install-found x86_64
[2024-11-29 18:53:02.645] Server install found in WSL
[2024-11-29 18:53:02.646] NodeExecServer run: C:\WINDOWS\System32\wsl.exe -d Ubuntu sh -c '"$VSCODE_WSL_EXT_LOCATION/scripts/wslServer.sh" f1a4fb101478ce6ec82fe9627c43efbf9e98c813 stable code-server .vscode-server --host=127.0.0.1 --port=0 --connection-token=2610285640-1582010963-2862027626-393195657 --use-host-proxy --without-browser-env-var --disable-websocket-compression --accept-server-license-terms --telemetry-level=all'
[2024-11-29 18:53:02.887] Setting up server environment: Looking for /home/ryoma/.vscode-server/server-env-setup. Not found.
[2024-11-29 18:53:02.887] WSL version: 5.15.167.4-microsoft-standard-WSL2 Ubuntu
[2024-11-29 18:53:02.887] WSL-shell-PID: 1332
[2024-11-29 18:53:02.887] Node executable: /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/node
[2024-11-29 18:53:02.887] Starting server: /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/code-server --host=127.0.0.1 --port=0 --connection-token=2610285640-1582010963-2862027626-393195657 --use-host-proxy --without-browser-env-var --disable-websocket-compression --accept-server-license-terms --telemetry-level=all
[2024-11-29 18:53:02.888] /mnt/c/Users/kenta/.vscode/extensions/ms-vscode-remote.remote-wsl-0.88.4/scripts/wslServer.sh: 50: /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/code-server: not found
[2024-11-29 18:53:02.888] スタートアップの問題のヘルプについては、https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips にアクセスしてください
[2024-11-29 18:53:02.890] NodeExecServer run: C:\WINDOWS\System32\wsl.exe -d Ubuntu -e kill 1332
[2024-11-29 18:53:07.316] Download in background is enabled
```

</details>

一番重要なのは、
```
/mnt/c/Users/kenta/.vscode/extensions/ms-vscode-remote.remote-wsl-0.88.4/scripts/wslServer.sh: 50: /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/code-server: not found
```

というエラーメッセージ。
これは、
```
/home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/code-server
```
<b>というコマンドが存在しない</b>ことを示しています。
そこで、ChatGPT-4oとの相談も踏まえ、
```
/home/ryoma/.vscode-server/
```
というディレクトリをremoveする（rm /home/ryoma/.vscode-server/) することにしました。

そうすると、次のエラーが生じました。

## 2. 必要なデータがダウンロードできない！

<details><summary>エラー内容</summary>

```
[2024-11-29 18:56:23.361] Extension version: 0.88.4
[2024-11-29 18:56:23.361] L10N bundle: file:///c%3A/Users/kenta/.vscode/extensions/ms-vscode-remote.remote-wsl-0.88.4/l10n/bundle.l10n.ja.json
[2024-11-29 18:56:23.421] authorityHierarchy: wsl+Ubuntu
[2024-11-29 18:56:23.421] WSL extension activating for a local WSL instance
[2024-11-29 18:56:23.445] Resolving wsl+Ubuntu, resolveAttempt: 1
[2024-11-29 18:56:23.446] NodeExecServer run: C:\WINDOWS\System32\wsl.exe --status
[2024-11-29 18:56:23.548] WSL feature installed: true (wsl --status)
[2024-11-29 18:56:23.548] NodeExecServer run: C:\WINDOWS\System32\wsl.exe --list --verbose
[2024-11-29 18:56:23.662] 1 distros found
[2024-11-29 18:56:23.663] Starting VS Code Server inside WSL (wsl2)
[2024-11-29 18:56:23.663] Windows build: 26100. Multi distro support: available. WSL path support: enabled
[2024-11-29 18:56:23.663] Scriptless setup: false
[2024-11-29 18:56:23.664] No shell environment set or found for current distro.
[2024-11-29 18:56:23.831] WSL daemon log file: 
[2024-11-29 18:56:23.835] Probing if server is already installed: if [ -d ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813 ]; then printf 'install-found '; fi; if [ -f /etc/alpine-release ]; then printf 'alpine-'; fi; if [ -s ~/.vscode-server/bin/legacy-mode ]; then printf 'legacy-'; fi; uname -m;
[2024-11-29 18:56:23.835] NodeExecServer run: C:\WINDOWS\System32\wsl.exe -d Ubuntu -e sh -c if [ -d ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813 ]; then printf 'install-found '; fi; if [ -f /etc/alpine-release ]; then printf 'alpine-'; fi; if [ -s ~/.vscode-server/bin/legacy-mode ]; then printf 'legacy-'; fi; uname -m;
[2024-11-29 18:56:30.943] Probing result: x86_64
[2024-11-29 18:56:30.944] No server install found in WSL, needs linux-x64
[2024-11-29 18:56:30.944] Getting server from client side
[2024-11-29 18:56:30.945] Downloading VS Code Server stable - f1a4fb101478ce6ec82fe9627c43efbf9e98c813 into C:\Users\kenta\AppData\Local\Temp\vscode-remote-wsl\stable\f1a4fb101478ce6ec82fe9627c43efbf9e98c813\vscode-server-stable-linux-x64.tar.gz.
[2024-11-29 18:56:36.139] Unable to download server on client side: Error: Request downloadRequest failed with message: Client network socket disconnected before secure TLS connection was established. Will try to download on WSL side.
[2024-11-29 18:56:36.140] NodeExecServer run: C:\WINDOWS\System32\wsl.exe -d Ubuntu sh -c '"$VSCODE_WSL_EXT_LOCATION/scripts/wslServer.sh" f1a4fb101478ce6ec82fe9627c43efbf9e98c813 stable code-server .vscode-server --host=127.0.0.1 --port=0 --connection-token=1779809430-639831074-148858168-523514898 --use-host-proxy --without-browser-env-var --disable-websocket-compression --accept-server-license-terms --telemetry-level=all'
[2024-11-29 18:56:36.459] Setting up server environment: Looking for /home/ryoma/.vscode-server/server-env-setup. Not found.
[2024-11-29 18:56:36.459] WSL version: 5.15.167.4-microsoft-standard-WSL2 Ubuntu
[2024-11-29 18:56:36.459] Updating VS Code Server to version f1a4fb101478ce6ec82fe9627c43efbf9e98c813
[2024-11-29 18:56:36.459] Removing previous installation...
[2024-11-29 18:56:36.459] Installing VS Code Server for Linux x64 (f1a4fb101478ce6ec82fe9627c43efbf9e98c813)
[2024-11-29 18:56:36.459] Downloading:     
[2024-11-29 18:56:41.715] 100%
[2024-11-29 18:56:41.715] Failed
[2024-11-29 18:56:41.716] --2024-11-30 03:56:35--  https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable
[2024-11-29 18:56:41.716] Resolving update.code.visualstudio.com (update.code.visualstudio.com)... 13.107.246.46, 2620:1ec:bdf::46
[2024-11-29 18:56:41.716] Connecting to update.code.visualstudio.com (update.code.visualstudio.com)|13.107.246.46|:443... connected.
[2024-11-29 18:56:46.548] OpenSSL: error:0A000126:SSL routines::unexpected eof while reading
[2024-11-29 18:56:46.548] Unable to establish SSL connection.
[2024-11-29 18:56:46.548] ERROR: Failed to download https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable to /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813-1732906590.tar.gz
[2024-11-29 18:56:46.549] スタートアップの問題のヘルプについては、https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips にアクセスしてください
[2024-11-29 18:56:50.660] Download in background is enabled
```

</details>

一番重要なのは
```
[2024-11-29 18:56:36.459] Installing VS Code Server for Linux x64 (f1a4fb101478ce6ec82fe9627c43efbf9e98c813)
[2024-11-29 18:56:36.459] Downloading:     
[2024-11-29 18:56:41.715] 100%
[2024-11-29 18:56:41.715] Failed
[2024-11-29 18:56:41.716] --2024-11-30 03:56:35--  https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable
[2024-11-29 18:56:41.716] Resolving update.code.visualstudio.com (update.code.visualstudio.com)... 13.107.246.46, 2620:1ec:bdf::46
[2024-11-29 18:56:41.716] Connecting to update.code.visualstudio.com (update.code.visualstudio.com)|13.107.246.46|:443... connected.
[2024-11-29 18:56:46.548] OpenSSL: error:0A000126:SSL routines::unexpected eof while reading
[2024-11-29 18:56:46.548] Unable to establish SSL connection.
[2024-11-29 18:56:46.548] ERROR: Failed to download https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable to /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813-1732906590.tar.gz
[2024-11-29 18:56:46.549] スタートアップの問題のヘルプについては、https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips にアクセスしてください
[2024-11-29 18:56:50.660] Download in background is enabled
```
の、

```
ERROR: Failed to download https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable to /home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813-1732906590.tar.gz
```
何かしらのデータをダウンロードしようとして失敗していました。
このあと、
[wslのコツ集なる場所](https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips "https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips")
にアクセスし、解決策を探りました。
### (1) SSLの問題を解決しよう

```
OpenSSL: error:0A000126:SSL routines::unexpected eof while reading
Unable to establish SSL connection.
```
というエラーメッセージに着目し、
wgetで独自にダウンロードすることにしました。

:::note info
SSL（Secure Sockets Layer）とは、インターネット上でデータ（通信）を暗号化する仕組み。
簡単に言えば、ウェブサイトとユーザー間のデータを暗号化し、第三者に内容を読み取られないようにします。
:::
https://office110.jp/security/knowledge/technology/secure-sockets-layer

SSLでがっちりガードされているので、何かしらの対応をしないとダウンロードできないのでしょう。

```
wget --no-check-certificate https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable
```
これではだめでした。

### (2)rootのSSL証明書を更新しよう
ダウンロードする側のSSL証明書が古いとエラーが生じることがあるようです。

```
sudo apt update
sudo apt install --reinstall ca-certificates
```
しかし、なぜかわかりませんが、（うちの回線が遅いだけかもしれませんが、）やたらインストールに時間がかかるので、しびれを切らし、他の手法を試すことにしました。

## 3. 直接ダウンロードして、無理やり入れてしまおう
こうなったら、Ubuntuではなく、Windows側でダウンロードして、UbuntuにWindowsのCドライブをマウントすることで、移動させようと考えました。

https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable

ここにアクセスすると、
```
vscode-server-linux-x64.tar.gz
```
というファイルがダウンロードされます。
これを、
```
mkdir -p ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/
```
して作成した
```
~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/
```
以下に移動させ、解凍し、中のファイルをすべて取り出す。

##### 私の場合

```bash:データを移動、解凍、取り出し
sudo mount -t drvfs C: /mnt/c #CドライブをUbuntuにマウント
sudo mv /mnt/c/Users/kenta/Downloads/vscode-server-linux-x64.tar.gz ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/ #データを移動する
cd ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/ #ディレクトリを移動

ls vscode-server-linux-x64
#LICENSE  extensions  node_modules  package.json  vscode-server-linux-x64
#bin      node        out           product.json  vscode-server-linux-x64.tar.gz

mv vscode-server-linux-x64/* ./ #すべてのファイルを取り出す
```


これは、[1. リモートデスクトップ起動に必要なコマンドが存在しない！](##1.リモートデスクトップ起動に必要なコマンドが存在しない)で出現したエラーの中にあった、
```
/home/ryoma/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/code-server
```
をヒントにした。

/home/ryoma/<b>.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/</b>bin/code-server
太字の部分が同じなのです。

## 4. 解決へ
ここまでして、もう一度VScodeのリモートデスクトップを起動すると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744572/18963ad2-12c1-978e-e3d8-25dc8670324f.png)

やった！
うまくいきました！

## 5. まとめ
このエラーの解決は結果的に手動ダウンロードで手動で移動させて、というごり押しになってしまい、とてもスマートではなかったなと思っています。しかしながら、結局は、コードをいじくりまわすより自分でダウンロードして、手動で構築していった方が早いこともあるんだと実感しました。

とはいっても、大体の場合、コンピューターのような複雑系を制御するにはやはりコマンドが必須なので、もっと効率的にコマンドで操作できるようになりたいと思います。

本記事を読んで、もっと工夫できる点が思いついた方はご教授いただければ幸いです。

それではまた！