たびとの旅路 ~電脳砂漠の冒険譚~

フロッピー頼りに歩き、クラウドの地平を見つめる今日まで。見つけたオアシス、迷い込んだ砂の迷宮、全てこの羊皮紙に。

魔法の絨毯が飛ばなくなった時 ~Remote-SSH接続トラブル、完全討伐の書~

どうやら、一筋縄ではいかない砂の迷宮に迷い込んだらしい。この顛末を書き残しておくか。

Visual Studio Code(VS Code:高機能コードエディタ)の拡張機能「Remote - SSH」(リモートSSH接続機能)。それは、Linux(UNIXベースのOS)という遠い大地へ、一瞬で我らを運ぶ魔法の絨毯だ。しかし、このあまりに便利な神器は、気まぐれで、ある日突然、我らを乗せることを拒むことがある。

私も長年、この気まぐれに悩まされ、そのたびにscp(セキュアコピー:ファイル転送コマンド)やvi(テキストエディタ)といった、古の徒歩の旅へと逆戻りを強いられてきた。 しかし、もうその必要はない。これは、私がこれまでに遭遇した数多の接続トラブルと、その試行錯誤の末に編み出した解決の秘儀を体系的にまとめた、SSH接続トラブルシューティングの完全討伐の書である。

【最重要】まず、我が身の時代を問え

本題に入る前に、一つだけ絶対に確認すべきことがある。 VS Code 1.86以降、時の流れから取り残された古のオアシス(CentOS 7:旧世代Linuxディストリビューション、など)への道は、公式に閉ざされた。 もしあんたが古の土地へ旅をしようとしているなら、何を試しても無駄だ。唯一の解決策は、VS Codeという魔法の絨毯そのものを、道があった時代まで巻き戻すことだけ。心当たりがある者は、まずはこちらの羊皮紙を読むがいい。

時の砂に埋もれた道 ~VS Code 1.86、CentOS 7への旅路が絶たれた理由~

この羊皮紙のあらまし

この羊皮紙が導く者

  • 魔法の絨毯「Remote - SSH」から振り落とされ、解決策を探し求める者
  • Linuxという遠い大地で戦う、全てのVS Code使いの冒険者
  • 未来の災厄に備え、体系的な知識という名の武具を身につけておきたい探求者
  • リモート開発環境のトラブルに悩むすべての開発者

砂漠の道標

  • Remote - SSH - VS Codeの拡張機能。リモートLinuxサーバ上で直接コード編集できる。
  • Visual Studio Code (VS Code) - Microsoft製の軽量で拡張性の高いコードエディタ。
  • .vscode-server - Remote-SSH接続時にリモートサーバ側に自動配置されるVS Codeサーバプログラム。
  • プロセス - コンピュータ上で実行中のプログラムの実体。各プロセスには固有のIDが割り当てられる。
  • kill - Linuxコマンド。指定したプロセスを強制終了させる。
  • ホームディレクトリ - ユーザーごとに割り当てられる個人用ディレクトリ。通常は/home/ユーザー名
  • Tera Term - Windows用のSSHクライアントソフト。リモートサーバへの接続に使用される。
  • SSH - Secure Shellの略。暗号化された安全なリモート接続プロトコル。
  • ps - Linuxコマンド。実行中のプロセス一覧を表示する。

魔法の理:なぜ絨毯は飛ばなくなるのか?

トラブルを討伐するには、まず敵の正体を知らねばならない。 「Remote - SSH」は、接続時にLinuxサーバー側の故郷(ホームディレクトリ:ユーザー個人領域)へ、.vscode-serverという名の小さな分身を送り込み、起動させている。 あんたのVS Codeは、この分身と対話しているのだ。 何らかの理由で、この分身が病にかかったり、応答しなくなったりすることが、トラブルの主な原因だ。

討伐の儀式 レベル1:魂の再起動

遭遇する災厄の約9割は、この儀式で鎮まる。 病にかかった分身の魂を一度天に還し、VS Codeに新たな魂を宿らせる、最もシンプルかつ効果的な秘儀だ。

  1. Tera Term(SSHクライアントソフト)など、別の魔法でLinuxサーバーにログインする。
  2. ps -ef | grep vscode-server(プロセス一覧表示&検索)の呪文で、病にかかった分身の魂を探し出す。
  3. kill [プロセスID](プロセス強制終了)の呪文で、その魂を強制的に天に還す。
  4. VS Codeから再度接続を試みる。多くの場合、新たな魂が宿り、絨毯は再び飛び立つだろう。
再接続しています

新たな魂が宿り、再び旅が始まる

討伐の儀式 レベル2:肉体の浄化

魂の再起動でも解決しない場合、分身の肉体(プログラム本体)そのものが腐敗している可能性がある。その場合は、腐敗した肉体を丸ごと隔離し、VS Codeに新たな肉体を送り込ませる。

  1. Linuxサーバーにログインし、故郷にある.vscode-server/binの中を覗く。
  2. 62610756...のような、ランダムな名を持つ腐敗した肉体(ディレクトリ:フォルダ)を、mv(移動コマンド)の呪文で/tmpという名の隔離所へ移す。
  3. VS Codeから再度接続を試みる。肉体がないことを悟ったVS Codeは、清浄な新たな肉体を送り込んでくれるはずだ。

討伐の儀式 レベル3:聖域での安全な儀式

会社の共用サーバー(複数ユーザー共有環境)という、多くの旅人が行き交う聖域で儀式を行う場合、細心の注意が必要だ。うっかり他人の分身の魂を天に還してしまえば、大惨事となる。 自分の魂だけを正確に見つけ出す、より高度な儀式を伝授しよう。

  1. VS Codeの設定で「remote.ssh.show」を検索し、「SSH ログインターミナルを常に表示します。」にチェックを入れる。

    SSH ログインターミナルを常に表示する

    真実の目を開眼させる

  2. 接続を試みると、VS Code下部のターミナルに、接続の儀式の詳細がログとして流れ始める。

    SSH 接続の詳細が表示される

    儀式の詳細が、ここに記される

  3. ログの中にSSH 接続 ID '62610756...dd3b'のような一文が見つかるはずだ。このランダムな文字列こそ、あんたの魂を識別する、唯一無二の刻印だ。

  4. この刻印を手がかりにps -ef | grep "62610756...dd3b"と呪文を唱えれば、他人の魂と見間違えることなく、自分の魂だけを正確に特定できる。

  5. あとは、特定した魂を、心置きなくkillするだけだ。

羊皮紙を巻く前に

魔法の絨毯が飛ばなくなる日は、突然やってくる。しかし、その正体を知り、討伐の手順を体得すれば、慌てる必要はない。レベル1の魂の再起動で9割は解決し、残る1割も体系的な儀式で必ず討伐できる。

Remote-SSH接続トラブル討伐の三段階

  1. レベル1:魂の再起動 - プロセス強制終了により、病んだ分身を浄化する最速の儀式。
  2. レベル2:肉体の浄化 - .vscode-serverディレクトリの隔離により、腐敗した肉体ごと刷新する。
  3. レベル3:聖域での安全な儀式 - セッションID特定により、共用環境でも安全に討伐を執行できる。

討伐前の必須確認

  • 時代の確認 - VS Code 1.86以降は古の土地(CentOS 7等)への道が閉ざされている。該当する場合、VS Codeのバージョンダウンのみが解決策。

まとめ

この討伐の書が示す手順は、長年の試行錯誤から編み出された確実な秘儀だ。災厄に見舞われたら、慌てずレベル1から順に試してほしい。多くの場合、最初の儀式で絨毯は再び飛び立つだろう。

この知識が、あんたの開発環境を守る護符となり、未来の災厄から旅路を守ることを願う。

おっと、相棒が「また接続切れる前に次行くぞ」と急かしている。今宵はここまでとしよう。

砂漠で見つけた魔法のランプ

ラクダの独り言

ご主人が「魔法の絨毯が飛ばねえ!」とか言って、黒い画面に呪文を打ち込んだり、絨毯の部品を捨てたり、大騒ぎしている。俺に言わせりゃ、そんな気まぐれな絨毯なんざ捨てちまって、俺の背中にでも乗ればいいんだ。確実だし、乗り心地だって悪くねえ。それに、俺は急に飛べなくなったりしねえからな。便利な道具に頼りすぎるから、こういうことになるんだ。まったく、やれやれだぜ。