2024年の2月に入っていきなり発生したやつです。
原因も解って一先ず解決したので書き残します。
Windows11で、これまでVSCodeの拡張機能の「Remote-SSH
」を使ってトンネル経由でサーバーに接続できていたのが急に出来なくなった状況です。
目次
原因
VSCodeの新しいバージョン1.86
でLinuxに求める最小構成が更新されたため。
アップデートの通知もなく、気づかないうちに自動更新されていた。
- 発生の流れ
VSCodeのv1.86
がリリースされる。(1月)
↓
v1.86
が求めるLinuxの最小構成だとAmazon Linux2
サーバーが対象外になる。
↓
VSCodeの自動更新が裏で動いてv1.86
にアップデートされる。(2月)
↓
接続できなくなった。
参考:VSCodeのv1.86
のリリースノート
https://code.visualstudio.com/updates/v1_86
このリリースノート内の「Linux minimum requirements update
」に色々書いてあります。
解決方法
公式に書いてあることとだいたい同じです。
方法1)サーバーのアップデートをする。
これがセキュリティ的にも最も良い方法です。
glib
を、2.28 以上に。glibcxx
を3.4.25以上に上げると良いらしい。
方法2)VSCodeのバージョンを1.85に落とす。
VSCodeのバージョンを落とす方法はリリースノートにも案内があって「you can download the VS Code release 1.85.
」という文言でリンクが張ってありおます。
リンク先はv1.85
のリリースノートになっていて、その画面からダウンロードが可能です。
なお、先にVSCodeの自動更新をOFFにしないと、VSCodeの自動更新が走ってすぐv1.86
になってしまいます。
●VSCodeの自動更新をOFFにする方法
1.メニューから「ファイル
」→「ユーザ設定
」→「設定
」と移動。
2.設定の検索ボックスにupdate mode
と入力する。
3.Update Modeをnone
にする。
4.VSCodeを再起動
5.ヘルプのバージョン情報からバージョンが狙ったものになっている事を確認
その時行った原因調査
-
teraterm
で接続先のサーバーに普通に接続できる事を確認
・接続できたので、回線や接続先のサーバーは原因ではない。
↓ - windowsの
OpenSSH
クライアントからも接続先のサーバーに繋がることを確認
・VSCodeのssh
接続はOpenSSH
を使っているため確認する。
・windowsのターミナル(cmd
)を開いてssh
コマンドで確認。
・接続できたので、windowsやOpenSSH
が原因では無い。
↓ - 接続先サーバー上のvs-codeのログを確認
・ssh
接続自体は出来てるっぽいため、接続先に残されるログを確認。
・/home/{自分のアカウント}/.vscode-server/
のディレクトリに.{ハッシュ値}.log
というドット(.
)から始まるファイルがあるため、それらのうち更新日時がVSCodeが繋がらなかった時のものになっているものを探す。
・みつけたログファイルの中身見る。するとglib
とglibcxx
のバージョンがどうのと読めるエラー文が残されている。
Warning: Missing GLIBCXX >= 3.4.25! from /usr/lib64/libstdc++.so.6.0.24
Warning: Missing GLIBC >= 2.28! from /usr/lib64/libc-2.26.so
Error: Missing required dependencies. Please refer to our FAQ https://aka.ms/vscode-remote/faq/old-linux for additional infomation.
・けれど接続先のサーバーは特にgcc
など関連するものを更新した話はない。
・なので、VSCode側の仕様が変わった可能性が大きい。
↓
- VSCodeの公式サイトからリリースノートを探し出して読む
・VSCodeのバージョン情報を確認してみると通知もなく最新になっていた
・最新のバージョンのアップデート内容を確認したことで原因が判明。
VSCodeに限らず、自動アップデートの更新の通知が無い(あるいは非常に目立たない)ソフトウェアはたまにあるので、急に動きがおかしくなったら使ってるツールの自動アップデートも疑うのもアリかもしれません。
少なくとも今回は更新されたことに全く気づきませんでした。
そして今回はAmazon Linux2サーバーが古いというのも原因なので、サーバーのアップデートをこまめにできる運用体制である事が一番良いのだろうなぁと思いつつ、それが難しいなとも思った一件でした。