✅ はじめに
近年はAIや高性能GPUの記事が目立ちますが、実際に多くのユーザーが使っているのは 無料プランのUbuntuサーバー や e2-micro(GCP)、Oracle CloudのFree Tier といった 低スペック環境です。
私自身もその一人。VSCodeでSSH接続して作業していると、途中で突然切断されてしまうことがありました。作業中のコードが消えてしまうこともあり、TeraTermに切り替えざるを得なかった経験があります。
VSCodeのの仕様が変わったせいか、今までは切断されることはなかったんです。
原因は、2025 年春の VS Code アップデート(v1.95 以降)で Remote‑SSH が常駐する vscode‑server プロセスと巨大なファイル監視サブプロセスを Node 20 ベースに刷新したためです。
無料 VPS の 0.5 〜 1 GB RAM 環境ではメモリが足りず、Linux の OOM‑killer が node プロセスを強制終了 → SSH トンネルごと落ちる、という流れで「突然切断」に見えます。

1. 仕様変更のポイント
| 時期 | 変更内容 | 低スペック VPS への影響 |
|---|---|---|
| 2025‑04 (VS Code 1.93) | Remote‑SSH v0.108 で “companion” チャネルのハートビート間隔が短縮 | CPU 0.2 〜 0.3 core 常時使用 |
| 2025‑05 (VS Code 1.95) | vscode‑server が Node 20 + 内蔵 file‑watcher に刷新。プロセス常駐数 2→3、RSS 約 +200 MB | 512 MB プランは OOM 発生 → 接続断【GitHub #9778】GitHub |
| 2025‑06 | Dynamic port‑forward をデフォルトで自動有効化 | SSHD 側で AllowTcpForwarding no だと握手失敗・即切断Cursor – Community Forum |
2. よく報告される症状
ssh child died, shutting downと出て再接続ループに入るStack Overflow- CLI の普通の
sshや TeraTerm は安定している top/htopで見るとnode ~/.vscode-server/bin/.../nodeが急激にメモリを消費し、瞬間的に Killed になる
3. 即効で効く応急処置
| 手順 | コマンド | 効果 |
|---|---|---|
| リモートのキャッシュ削除 | rm -rf ~/.vscode-server/ | 古いバイナリと拡張の衝突解消earlruby.org |
| Dynamic ポートフォワード無効 | settings.json に"remote.SSH.enableDynamicForwarding": false | AllowTcpForwarding no の VPS でも接続維持 |
| Keep‑alive 送信 | ~/.ssh/config にServerAliveInterval 60ServerAliveCountMax 3 | NAT / FW のアイドル切断を回避support.huaweicloud.com |
| メモリ節約 | ①不要な拡張を remote 側で無効化② "remote.SSH.useLocalServer": false | Node プロセス数・RAM 削減 |
4. 抜本的な回避策
- VS Code のバージョンピン
- 安定していた 1.92 (2025‑03) の ZIP を落とし、
"update.mode": "none"で自動更新停止。
- 安定していた 1.92 (2025‑03) の ZIP を落とし、
- 別プロセスエディタ併用
- シェル作業・vim などは VS Code とは別セッション (tmux/Screen) にする。
- VS Code インサイダー版
- v1.101-insider ではメモリリークが暫定修正されているという報告あり(Issue #9778 参照)。
参考にした公開情報
- Remote‑SSH 2025‑05 アップデート後の大量切断報告(Cursor フォーラム)Cursor – Community Forum
vscode-serverメモリリーク Issue #9778(GitHub)GitHub.vscode-serverディレクトリ削除で復旧する事例(ブログ)earlruby.orgsshは生きているのに VS Code だけ落ちる問題(Stack Overflow)Stack Overflow- Keep‑alive 設定でファイアウォールのアイドル切断を防ぐ方法(Huawei Cloud KB)support.huaweicloud.com
🧪 現在のマシンスペックと問題点
以下は、私が使用しているUbuntuインスタンスのスペックです:
$ free
total used free shared buff/cache available
Mem: 979708 526436 98036 1556 536932 453272
Swap: 0 0 0
- メモリは約1GB
- Swapは未設定
- 長時間のVSCode接続で切断される
この状態では、少し重い処理を実行するだけで「Out of Memory(OOM)」が発生し、VSCode側がタイムアウト・切断してしまいます。
🛠 解決策:スワップファイルの導入
Swap(スワップファイル)を設定することで、物理メモリが不足したときの緊急避難先ができます。
手順は以下の通りです:
1. スワップファイルを作成(例:1GB)
sudo fallocate -l 1G /swapfile
または互換性重視なら:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
表示された内容
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 17.8276 s, 60.2 MB/s
2. パーミッションを設定
sudo chmod 600 /swapfile
3. 初期化と有効化
sudo mkswap /swapfile
sudo swapon /swapfile
表示された内容
sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=ea117786-54d3-4317-b575-130df8e58c5b
4. 永続化(再起動後も有効に)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
表示された内容
/swapfile none swap sw 0 0
5. /etc/fstab に重複行がないか確認
cat /etc/fstab
出力に以下のような行が複数回書かれていないか確認してください:
/swapfile none swap sw 0 0
❌ NG例(今回の状態):
/swapfile none swap sw 0 0
/swapfile none swap sw 0 0
✅ OK例:
/swapfile none swap sw 0 0
🔧 重複していた場合の対処方法:
sudo nano /etc/fstab
もしくは
sudo vi /etc/fstab
で開いて、片方を削除 → 保存。
💡 なぜこれが重要?
fstabに同じ行が複数あると、起動時にスワップ領域の重複エラーやマウント失敗が発生することがあります。- 特にCloud-initベースのインスタンス(e.g., GCP/Oracle)ではブート時の処理が繊細です。
🔍 その後どうなったか?
VSCodeでのSSH接続が 極端に切れにくくなり、普段どおりの開発作業ができるようになりました。
とくに、AIを使うほどのリソースは必要ないけど、ちょっとしたPythonスクリプトを書きたいといった用途には最適です。
💬 まとめ
VSCodeが切断される原因は通信の不安定さだけではなく、サーバー側のメモリ不足が関係していることがあります。
e2-microやOracle Cloudの無料プランでも、スワップファイルを設定すれば十分に快適な開発環境になります。
“ちょっとした工夫で劇的改善”──このような泥臭い改善も、これからの時代にこそ価値があるはずです。
🔧 スワップファイル作成ガイド
📋 スワップファイル作成手順
-l 1G: 1GBのサイズを指定
/swapfile: スワップファイルのパス
スワップファイルには機密情報が含まれる可能性があるため必須
この時点ではまだスワップとして使用されていません
この瞬間からシステムがスワップを使用開始
🧩 おまけ:VSCodeが切断されたときの応急処置
- VSCodeのSSHセッションを一度閉じて再接続
- 必要なら
.vscode-serverディレクトリを削除して再構築 - 長時間作業には
screenやtmuxの併用もおすすめです


