砂漠の旅人(たびと)

UNIX / MS-DOS 時代から電脳砂漠を旅しています

【1.86以降】VS Code で CentOS 7 に SSH 接続できなくなった

こんにちは、たびとです。

仕事で Visual Studio Code の Remote - SSH 拡張機能を使って Linux に接続しているのですが、 突然、CentOS 7 に接続できなくなりました。

当初は、以前あった現象と同じと思って、同様の処置を行ったのですが接続できないままです。

sabakunotabito.hatenablog.com

この記事の内容とは異なり、Visual Studio Code (以降、VS Code) の版数が 1.86 以降だと、 CentOS 7 に接続できないことが判明しました。

この内容は、Microsoft からも公式にアナウンスされていて、 CentOS 7, Debian 9, Oracle Linux 7, RedHat Enterprise Linux 7, Ubuntu 18.04 がサポート対象外となっています。 詳細は以下の記事を参照してください。

code.visualstudio.com

この記事の対象者

  • VS CodeCentOS 7 などのレガシー OS に ssh 接続したい
  • VS Code による ssh 接続がサポート外となった OS を知りたい

VS CodeCentOS 7 に ssh 接続できるようにする

ここでは、以下の内容を検証します。

  1. CentOS 7 の環境を用意する
  2. VS Code 1.86 以降で ssh 接続する
  3. VS Code 1.85.2 で ssh 接続する

CentOS 7 の構築

CentOS 7 の ISO イメージをダウンロードし、VMwareCentOS 7 を構築します。 yum によるアップデート後は、7.9.2009 でした。

CentOS 7 (7.9.2009)

このとき、glibc と libstdc++ の版数は以下の通り。

$ rpm -q glibc
glibc-2.17-326.el7_9.x86_64

$ rpm -q libstdc++
libstdc++-4.8.5-44.el7.x86_64

VS Code 1.86 以降は ssh 接続できない

VS Code の版数を確認します。1.86.1 と表示されています。

VS Code 1.86.1

Remote - SSH拡張機能で、CentOS 7 へ ssh 接続してみます。

Remote - SSH 拡張機能CentOS 7 へ接続する

パスワードを入力すると、以下のメッセージが表示されました。 仕事で使っている CentOS 7 は右下の「リモートホストは、glibc および libstdc++ の前提条件を満たしていない可能性があります」が表示されて接続はできませんでした。

VS Code 1.86.1 では警告が表示された

Allow を選択すると、ssh 接続することはできましたが、画面上部に警告が表示されました。 ただし、サポート対象外のため、何か不具合が発生する可能性があります。

VS Code 1.86以降でも ssh 接続できることもある

今回の VMware による検証のように、VS Code 1.86 以降でも ssh 接続できることもあるようです。

アンインストール前にやること

デフォルトで自動更新が有効になっているため、 アンインストール前に自動更新を解除する必要があります。

右下の歯車アイコンをクリックし、設定メニューを選択します。

設定メニュー

設定の検索に「Update: Mode」と入力し、自動更新を default から none に変更します。

VS Code の自動更新を解除する

VS Code の再起動が表示されるため、再起動を選択します。 再起動後、アンインストールのために VS Code を終了します。

VS Code の再起動ダイアログ

VS Code 1.86 以降のアンインストール

インストールされているアプリから VS Code を探してアンインストールします。 アンインストールしても、設定情報や拡張機能は残っているようです。

VS Code のアンインストール

VS Code 1.85.2 のインストール

VS Code 1.85.2 は以下のページからダウンロードします。

code.visualstudio.com

以下のように x64 をクリックします。

VS Code 1.85.2 のダウンロード

VSCodeUserSetup-x64-1.85.2.exe をダウンロード後、インストーラを起動し、 VS Code 1.85.2 をインストールします。 ここからは、一本道なので説明を割愛します。

VS Code 1.85.2 のインストール

VS Code 1.85.2 による ssh 接続

VS Code の版数が 1.85.2 であることを確認します。

VS Code 1.85.2 であることを確認

次に拡張機能の一覧から Remote - SSH を確認します。 拡張機能は削除されていないため、VS Code 1.85.2 では Remote - SSH が使えないと表示されます。

Remote - SSH の確認

アンインストールの横の下矢印を押し、別のバージョンをインストールを選択します。

別のバージョンをインストール

インストール候補が複数表示されるので、最新の版数 (最上位の版数) を選択します。

最新の版数を選択

直ぐに正常に動作する Remote - SSH に置き換えられます。

動作する Remote - SSH に置き換えられた

先程と同様に ssh 接続すると、警告もなく無事に接続できるようになりました。

CentOS 7 に ssh 接続できるようになった

まとめ

結局、CentOS 7 が ssh 接続できなくなる理由は、 glibc >= 2.28, libstdc++ >= 3.4.25 が条件でした。 このため、VMware で作成した CnetOS 7 の libstdc++ 4.8.5 が条件を満たしたため、ssh 接続できたのかもしれません。 glibc を個別にインストールすれば ssh 接続の警告を消すことも可能化もしれませんが、 CentOS 7 は 2024 年 6月末にサポートが終了するので、これ以上の追及は止めときます。

CentOS 7 などのレガシー OS に ssh 接続する場合、入れ替え前に自動更新を必ずオフにしておきましょう。 自動更新の設定は、VS Code の再起動後に有効になるため、自動更新前にアンインストールすると、 もう一度、同じことをやる羽目になります。

最後に、レガシー OS を使わなくなったら、VS Code の自動更新をオンに戻し、最新版にアップデートしましょう。

では、皆さん、よい旅を。

参考サイト