Linux Software

[Visual Studio Code] 最新の VSCode で 古い Linux サーバーに接続する [Remote-SSH]

投稿日:

最新の VSCode v1.99 以降で glibc<2.28 の古い Linux サーバーに Remote-SSH で接続できなくなりました。
公式にその対処法の記載を見つけたのですが、私的にやや情報不足で色々ハマりながらも、
最終的には接続できるようにできたので、記録を以下に残します。

 

 

背景

過去に VSCode v1.86 (January 2024) で glibc>=2.28 が要件化され、
一時的に古い Linux サーバーに接続できなくなったことがありました。
その際は一旦は警告のみで、再び接続できるように緩和されていましたが、
VSCode v1.99 (March 2025) で1年以上の時を経て正式に要件化されました。
これに伴い Remote-SSH で要件を満たさない Linux server にも接続できなくなりました。
このサーバーにこれまで同様に接続できるようにします。

 

接続先の環境

OS: CentOS 7.9 (!!)
Kernel: 3.10.0-1160.el7.x86_64 (!!)
glibc: 2.17 (!!)

 

改めてみると驚くほどに古い環境ですが、
一般権限しか持たない私にはシステム自体はどうにもできません。
kernel version は後で必要になるのでご自身の環境のものを控えておいてください。

ちなみに接続元は VSCode v1.99 (macOS arm64) ですが、
こちらはあまり環境としては関係しないと思います。

Google Adsense



 

対応方法

基本的には ココ の記載されていることをやります。
が、いくつかハマりどころがあるので、個別に実際にやったことを記します。

  • sysroot のビルド
  • patchelf のダウンロード, 展開
  • VSCODE_SERVER_* 環境変数3つの設定

 

sysroot

 

ビルド環境作り

公式ではビルド用の一時環境を docker コンテナで作る方法が紹介されています。

 

ubuntu:latest をベースにビルド環境のコンテナを作っているようです。
私はちょうど Proxmox VE に ubuntu24.04 の CT(コンテナ) があったので、
これを使って同様の環境を作りました。
以下のリソースで ubuntu24.04 の CT を作成します。
- memory: 4096MB
- disk: 16GB
(- CPU core: 4)

 

当初、ビルドのためだけの一時環境だと思って memory: 1GB, disk: 8GB でやりましたが、
いずれも途中で足りなくなってやり直しました(2敗)。
CPUコア数に依存するのかもしれませんが、リソースモニター等を見る限り、
メモリは 2.5GB以上、ディスクは 9GB 以上は必要そうです。
上記とほぼ重複しますが、作成したCT にログインして以下を実行します。

Google Adsense



 

 

ビルド

 

冒頭に記載のある通り ct-ng は non-root でやる必要があるようなので、
一般ユーザー [user] を作ります。

wget でダウンロードしている config ファイルはココに記載があります。
環境(arch) に合わせて適宜変更してください。

.config ファイルについて。
公式に一切記載がありませんが、このままビルドすると古い環境では
FATAL: kernel too old と出て無限ループに陥ります(1敗)。
CT_GLIBC_MIN_KERNELCT_LINUX_VERSION を書き換える必要があることがココ でコメントされています。
ご自身の接続したいサーバーの kernel version (以下) を指定してください。
(私の場合は '3.10' に変更しました。)

ビルドは Proxmox VE 上の4コアで20分程度掛かりました。

 

 

patchelf

github からリモートサーバーの環境に合わせて tar-ball をダウンロードしてください。
VSCode 公式に patchelf v0.18 以降を使用することが明記されています。

Google Adsense



 

VSCODE_SERVER_* 環境変数の設定

sysroot, patchelf をリモートサーバーにコピーして、
以下の3つの環境変数を対応するように設定します。

  • VSCODE_SERVER_CUSTOM_GLIBC_LINKER: ビルドした sysroot の ld-2.28.so のパス。
  • VSCODE_SERVER_CUSTOM_GLIBC_PATH: ビルドした sysroot lib のパス。
  • VSCODE_SERVER_PATCHELF_PATH: コピーした patchelf 実行ファイルのパス

私の場合 ~/local/vscode_remotessh 以下に
ビルドした sysroot (ビルド直下のx86_64-linux-gnu/) と patchelf/ を配置し以下のように設定しました。

 

v1.99 以降の VSCode で、この対処を施した要件を満たさない古いLinuxサーバーへ接続すると、
要件を満たさない警告と共に、再び無事に接続することができました。

 

 

トラブルシューティング

 

'FATAL: kernel too old' と出て vscode-server のダウンロード, 展開を繰り返す

前述の通り、sysroot のビルド前に
config ファイルに CT_GLIBC_MIN_KERNELCT_LINUX_VERSION を適切に設定してください。

 

 

関連情報

https://github.com/microsoft/vscode-docs/blob/main/remote-release-notes/v1_97.md#migration-path-for-linux-legacy-server

https://code.visualstudio.com/updates/v1_99#_linux-legacy-server-support-has-ended

https://code.visualstudio.com/docs/remote/faq#_can-i-run-vs-code-server-on-older-linux-distributions

https://github.com/microsoft/vscode/issues/231623#issuecomment-2779478886

Google Adsense

Google Adsense

-Linux, Software
-, ,

Copyright© HEPtech, 2025 All Rights Reserved.