WindowsからRaspberry Piのファイルを直接編集|VS Code Remote-SSHと初回タイムアウトの対処

raspberry pi

このサイトには、ATOMというエディタでRaspberry Piのファイルを編集する記事が3本あります。2021年に書いたものです。

先日ひさしぶりに読み返して、少し青くなりました。ATOMは2022年12月に開発が終了しています。あの3本の手順は、もう動きません。

ただ、やりたかったことは、いまも同じなんです。Windowsの画面から、ラズパイの中のファイルを直接ひらいて編集したい。ついでに同じ画面でコマンドも打ちたい。

あのころは、これをやるためにプラグインを2つ入れて、日本語化もして、記事3本ぶんの手順を書きました。いまは、拡張機能を1つ入れるだけです。VS Code の Remote – SSH。それでファイル編集もターミナルも、両方ついてきます。

先に、何が変わったのか

ATOMでやっていたこと(2021年)VS Code Remote-SSH(いま)
エディタATOM(2022年12月に開発終了VS Code
ファイル編集プラグイン Ftp-Remote-Edit拡張機能 Remote – SSH ひとつ
ターミナルプラグイン platformio-ide-terminal
日本語化別途プラグインVS Code本体の日本語パック
記事の本数3本この1本

減ったのは手間だけではないんです。ATOMのプラグイン方式は「ファイルを転送して編集する」形でした。手元で直して、送り返す。

Remote-SSH は違います。VS Codeの一部が、Raspberry Pi の中に入って動きます。だから、ひらいたターミナルも最初からラズパイ側のものです。ここがいちばん大きい違いだと思います。

検証した環境:Windows 11 / VS Code 1.136.1 / Remote – SSH 0.128.0 / Raspberry Pi 5 Model B / Raspberry Pi OS(Debian 13 Trixie・64bit)。2026年9月11日に実際に接続して確かめた記録です。うまくいかなかったところもそのまま書いています。

準備するもの

用意するのは2つだけです。Windows側にVS Codeラズパイ側にSSH。順番に見ていきます。

Windows側:VS Code

VS Code本体の入れ方は、この記事では省きます。公式サイトからインストーラーを落として、進めるだけです。インストーラーの言語も自動で日本語になります。

VS Codeがまだの方へ。入れるところから「最初のコードを書いて実行する」までを、Python学習の1回目に書いてあります。この記事の操作に慣れていない方は、先にこちらを見ておくと迷いません。

python学習①|コードの記述 VSCode

ラズパイ側:SSH

ラズパイ側は、SSHを使えるようにしておきます。

sudo raspi-config nonint do_ssh 0

画面から操作するなら sudo raspi-config →「Interface Options」→「SSH」です。Raspberry Pi Imager で書き込むときに「SSHを有効化する」にチェックを入れていれば、この作業は要りません。

いま有効かどうかは、こう打てば分かります。

$ systemctl is-active ssh
active

SSH接続そのものの説明は、別記事に書いてあります。VNCの3部作の2回目です。

Raspberry Pi VNC接続までを3段階説明 2/3 起動したraspberry pi OSにSSH接続する

拡張機能「Remote – SSH」を入れる

ここからが本番です。VS Code の左端にある拡張機能(四角が4つ並んだアイコン)を押して、Remote - SSH で検索してください。

VS Codeの拡張機能の検索結果。Remote - SSH、Remote - SSH: Editing Configuration Files、Remote Explorer の3つがMicrosoft製として並んでいる
いちばん上の「Remote – SSH」(Microsoft)を入れます

1つ入れると、3つ入ります。驚かなくて大丈夫です。

Remote - SSH(本体)/ Remote - SSH: Editing Configuration Files(設定ファイルを編集するためのもの)/ Remote Explorer(左端に接続先の一覧アイコンを足すもの)——この3つがまとめて入ります。

接続先を登録する

次は、どのラズパイに繋ぐのかを教えてあげる作業です。Windows側の C:\Users\(ユーザー名)\.ssh\config というファイルに書きます。ファイルが無ければ新しく作ります(拡張子はありません)。

Host raspberrypi
    HostName raspberrypi.local
    User pi
    IdentityFile ~/.ssh/id_ed25519
Host好きな名前。VS Codeの一覧にこの名前で出ます
HostNameラズパイのホスト名(◯◯.local)またはIPアドレス
Userラズパイのユーザー名
IdentityFile鍵で接続する場合だけ。パスワードで繋ぐなら、この行は要りません

4行だけです。書けたら保存して、左端のリモートエクスプローラー(モニターの絵に、右下に小さい丸が付いたアイコン)を押してみてください。

VS Codeのリモートエクスプローラー。リモート(トンネル/SSH) の下に SSH、さらにその下に raspberrypi が表示されている
config に書いた Host の名前が、そのまま一覧に出ます。ここに出ていれば設定は読めています

アイコンが見つからないときは、メニューの 表示(V) →「リモート エクスプローラー」でも同じものが開きます。

接続する

いよいよ接続です。一覧の raspberrypi にマウスを乗せると、右端に矢印が出ます。「現在のウィンドウで接続する」を押します。

初回だけ、英語で聞かれます

Select the platform of the remote host raspberrypi と表示され、Linux / Windows / macOS の3択が出ている
Linux を選びます。Raspberry Pi OS は Linux です

日本語化してあるのに、ここだけ英語で出ます。一瞬「あれ?」となりました。でも聞かれるのは初回だけです。一度選べば、次からは出ません。

そのあと、けっこう待たされます

VS Codeの通知。VS Code Server をダウンロードしています、という表示と、linuxを選んだことが設定に保存されるという英語の案内
「VS Code Server をダウンロードしています…」と出ます。下の英語の通知は「linuxを選んだので設定に覚えておきます」というお知らせで、押す必要はありません

ここで、ラズパイ側に1.3GBが置かれます

Remote-SSH は、Raspberry Pi の中に「VS Code Server」という本体を展開します。実際に測った数字です。

接続前:ホームフォルダ 3MB → 接続後:1,314MB~/.vscode-server1,311MB・6,260ファイル

microSDの空き容量を先に確認してください。2GB以上は見ておきたいところです。

展開の様子も測りました。

接続開始から +10秒     28MB /     4ファイル
接続開始から +64秒    595MB / 1,908ファイル
最終               1,311MB / 6,260ファイル

★1回目は、タイムアウトしました

ここが、この記事でいちばん伝えたいところです。

エラーダイアログ。raspberrypi への接続を確立できません: Connecting with SSH timed out. と表示され、リモートを閉じる/再試行/その他の操作 のボタンが並んでいる
"raspberrypi" への接続を確立できません: Connecting with SSH timed out.
VS Code左下のステータスバー。SSH: raspberrypi から切断しました と警告表示になっている
左下も「SSH: raspberrypi から切断しました」に変わります
VS Code下部のターミナル。直近のRemote-SSHセッションで以下の問題が検出されました、として Timeout / Error: Timeout (Connecting with SSH timed out) が表になって出ている
ターミナルにも「直近の Remote – SSH セッションで以下の問題が検出されました」として、同じ内容が表で出ます

失敗したように見えますが、このときラズパイ側を調べたら、展開は終わっていました。

応答              あり
負荷              0.02 / 0.13 / 0.08   ← ほぼ無負荷
メモリ            944MB / 8,062MB      ← 余裕あり
.vscode-server    1,311MB / 6,260ファイル ← 展開は完了している
SSHのログ          Accepted publickey ... ← 認証も成功している

再試行すれば通ります

「再試行」を押したら、そのまま繋がりました。

1.3GBを6,260ファイルに展開する処理がmicroSD上で重く、VS Code側の待ち時間を超えてしまった、というのが素直な読み方だと思います。断定はしません。ただ、展開そのものは終わっているので、2回目は速いです。

黄昏の戯れ

中の人

ここで「設定を間違えたかな」と戻っちゃう人、いると思うんだよね。展開が終わってるのに諦めるのはもったいない。

繋がると、左下がこうなります

VS Code左下のステータスバー。青い帯に SSH: raspberrypi と表示されている
この青い帯が「いまラズパイの中にいる」という印です。ここを見れば、どちらを触っているかが分かります

2回目からは速いです

1.3GBの展開は初回だけです。~/.vscode-server はラズパイ側に残るので、次からはダウンロードも展開も走りません。

実際、タイムアウトしたあとの「再試行」は、待たされる感じもなく繋がりました。

フォルダを開く

メニューの ファイル(F) →「フォルダーを開く…」を選ぶと、パスの入力欄が出ます。ここに入れるのはラズパイ側のパスです。

/home/pi/myproject
このフォルダー内のファイルの作成者を信頼しますか? という確認ダイアログ。フォルダーを信頼して続行/管理/キャンセル のボタンがある
初めて開くフォルダでは、この確認が出ます

なぜ聞かれるのか。VS Code は、開いたフォルダの中にある設定に従ってコードを実行することがあります。だから知らない場所を開いたときは、いちど止まるしくみになっています。

自分で用意したRaspberry Piなら「フォルダーを信頼して続行」で問題ありません。

VS Codeのエクスプローラー。myproject [SSH: raspberrypi] の下に hello.py が表示されている
フォルダ名の横に [SSH: raspberrypi] と付きます。ラズパイの中のファイルを見ている、という意味です

同じ画面で、ラズパイのターミナルが使えます

ATOMではプラグインをもう1つ入れて実現していた部分です。Remote-SSH では最初から付いています。

メニューの ターミナル(T) →「新しいターミナル」を選ぶだけです。

VS Code下部のターミナル。eugene@trixie:~/myproject $ というラズパイ側のプロンプトが表示されている
プロンプトがラズパイ側のものになっています。Windowsのコマンドプロンプトではありません

ここで python3 hello.py と打てば、ラズパイの上で実行されます。編集と実行が同じ画面で完結します。

★拡張機能は、リモート側にもう一度入れる必要があります

ここで詰まる人が多いと思います。実際に引っかかりました。

Windows側には Python 拡張が入っています。だから当然、ラズパイのファイルでも効くだろうと思っていました。試しに hello.py をわざと壊して、文法エラーになる行を足してみたんです。

VS Code は何も言いませんでした。左下のエラー表示は 0 のまま。赤い波線も出ません。

調べたら、こうでした。

Windows側の拡張機能   9個(Python / Pylance / デバッガ など)
ラズパイ側の拡張機能   1個(日本語パックだけ)

拡張機能は2か所に分かれます

Windows側で動くもの:見た目・キーバインド・テーマなど

リモート側で動くもの:Python・Pylance・デバッガなど、ファイルの中身を解析するもの

後者はラズパイ側に別途インストールが必要です。日本語パックだけ自動で入っているのは、あれがUI側のものだからです。

拡張機能を検索すると、ボタンの表示が変わっているのが分かります。

VS Codeの拡張機能でpythonを検索した結果。Python Debugger と Python のボタンが「SSH: raspberrypi にインストール…」となっており、警告マークが付いている
「インストール」ではなく「SSH: raspberrypi にインストール…」になっています。⚠マークは「このリモートでは有効になっていません」という意味です

このボタンを押せば、ラズパイ側に入ります。入れたあとは、補完もエラー検出も効くようになります。

入れたのに、まだ効かないとき。Python拡張は、入れたあとに「どのPythonを使うか」を選ぶ必要があります。リモート側だと、ここでつまずくことがあります。

VSCodeでPythonインタープリタが選択できない時の対処法|原因を6つに切り分ける

「壊れた」と思わないでください

「Windowsでは動いていたのに、ラズパイに繋いだら補完もエラー検出も効かない」——これは壊れたのではなく、リモート側に入れていないだけです。

編集が本当に届いているか、確かめました

VS Codeの画面だけ見ていても「本当にラズパイのファイルが変わったのか」は分かりません。ラズパイ側から直接確かめました。

13:34:10  309バイト  ← 文法エラーになる行を足して保存
          → python3 hello.py
            SyntaxError: invalid syntax

13:38:41  296バイト  ← その行を消して保存
          → python3 hello.py
            こんにちは、ラズパイさん

Windowsで打った変更が、ラズパイのファイルに入り、ラズパイの上で実行されています。壊したときはちゃんと壊れ、直したときはちゃんと直りました。

黄昏の戯れ

中の人

わざと壊してみるの、地味に大事なんだよね。うまくいった画面だけ見てても、本当に届いてるかは分からないから。

ATOMの記事から来た方へ

ATOMの記事でやっていたこといまの対応
ATOMをインストールする不要。VS Codeを使います
ATOMを日本語化する不要。VS Code本体の日本語パックで足ります
プラグイン Ftp-Remote-Edit でファイルを編集Remote – SSH ひとつ
プラグイン platformio-ide-terminal でターミナル
接続先をプラグインの画面で設定.ssh\config に4行

ATOMのプラグイン方式は「ファイルを取ってきて、直して、送り返す」形でした。Remote-SSH はラズパイの中で編集しているので、送り返す操作そのものがありません。保存すれば、それがラズパイのファイルです。

まとめ

この記事の要点

ATOMは2022年12月に開発終了。あの3記事の方法はもう使えません

Remote – SSH は拡張機能1つで、ファイル編集とターミナルの両方ができます

初回接続でラズパイ側に1.3GBが置かれます。空き容量を先に確認してください

初回はタイムアウトすることがあります。展開は終わっているので、再試行で通ります

Python拡張などは、ラズパイ側にもう一度入れます。効かないのは壊れたからではありません

3記事ぶんの手順が1本に減りました。減った理由は、道具が良くなったからというより、やりたかったこと(遠くのファイルを手元で編集する)が、当たり前の機能として取り込まれたからだと思います。

確かめていないことも書いておきます。

Raspberry Pi Zero など、非力な機種での動作は試していません。1.3GBの展開と、常駐するサーバーの負荷を考えると、Zeroでは厳しい可能性があります

rootが必要なファイルを開いたときの挙動は確認していません

・検証は Raspberry Pi 5 + Raspberry Pi OS(Trixie)で行いました

使っているOSが「Trixie」に変わっている件は、別記事に書きました。VNCや日本語入力の手順も変わっています。

Raspberry Pi OSがTrixieに変わっていました|日本語入力とVNCの手順が古くなっています

タイトルとURLをコピーしました