はじめに
Raspberry Pi(ラズパイ)を触っていて、誰もが一度は感じる煩わしさ。それは**「周辺機器の準備」と「ファイルの受け渡し」**ではないでしょうか。
使うたびにモニターやキーボードを繋ぎ直し、PCで作ったプログラムをUSBメモリなどで移動させる……。そんな手間を解消し、「メインPCから直接ラズパイを操作したい!」という欲求に応えてくれるのがSSH接続です。
SSH(Secure Shell)は、ネットワーク経由で安全にリモート操作するための仕組みです。
今回は、SSH接続する手順の解説と、SSH接続を試してみた使用感を書きたいと思います。
Raspberry Pi SSH接続の事前準備(公開鍵作成)
まずは、接続に必要な「鍵」をWindowsのPowerShellで作ります。

以下のコマンドを実行します。-f の後は好きな鍵名でOKです。
※この記事ではninjinpyvbalabで進めます
ssh-keygen -t ed25519 -C "" -f ninjinpyvbalab

以下のコマンドを実行して公開鍵を確認し、メモ帳などにコピーしておきます
cat ninjinpyvbalab.pub
注意! ここでコピーするのは**「公開鍵」**です。ラズパイ側に「この鍵を持つ人のみ通す」という設定をするために使います。
Raspberry Pi OSのインストールと初期設定
Raspberry Pi Imagerを使ってOSを書き込む際、設定をカスタマイズします。
OSカスタマイズ項目:
- 「SSHを有効にする」にチェック。
- 「公開鍵認証のみを使用する」を選択。
- 先ほどコピーした公開鍵(ssh-ed25519 …)を貼り付けます。
PowerShellにてRaspberry piにSSH接続してみる
ラズパイを起動したら、いよいよ接続です。

下記コマンドを入力してRaspberry PiにSSH接続をします。
ssh -i ninjinpyvbalab raspberry@pi0324.local
・初回接続時は yes と入力。
・鍵作成時に設定したパスワードを入力します。
Raspberry PiにSSH接続できない原因と対処法
つながらない時は?
実際にニンジンは、Raspberry Pi 3 Model B+ でSSH接続を試したときは、「ホスト名.local」では接続出来ませんでした。その際は、Raspberry Pi 3に一度ディスプレイを接続してIPアドレスを確認し、「ホスト名.local」を「IPアドレス」に変更することでSSH接続できました。
また、会社のネットワークにWifi接続していたため、デバイス間通信がパブリック設定(禁止)されており、接続できずに2時間ぐらい悩んだこともあります……。SEに相談したら「パブリックなんだから当たり前」と言われて、気が付きました。皆さんもネットワーク設定には注意してください。
接続できない時の対処法(authorized_keysの手動作成)
もしImagerの設定で接続できなかった場合は、SDカードに直接設定を書き込みます。

Raspberry PiのOSを書き込んだMicroSDカードをPCに差し、ルートディレクトリ(bootパーティション)に authorized_keys という名前のファイルを作成。※拡張子をつけない
Raspberry PiにMicroSDカードを戻して、Raspberry Piを立ち上げてSSH接続を試してみて下さい。
VSCodeで開発環境を作る
毎回コマンドを打つのは面倒なので、VSCodeの「Remote – SSH」拡張機能を使いましょう。

VS Code公式サイトよりソフトをインストール
https://visualstudio.microsoft.com/ja/downloads/

以下のコマンドを入力する。
Host pi0324
HostName pi0324.local
User raspberry
IdentityFile C:\Users\ENGnote\.ssh\ninjinpyvbalab
ServerAliveInterval 60
※環境に合わせて、ホスト名、ユーザー名等を変更してください
これで、PC上のファイルを編集するのと同じ感覚で、ラズパイ上のプログラムを開発できるようになります。
まとめと使用感:Raspberry Pi 4 Model Aの実力
今回は Raspberry Pi 4 Model A で検証しました。
3 Model B+ では接続が不安定な場面もありましたが、4系は比較的スムーズです。ただし、VSCode経由でPythonを動かすと、メモリ消費やネットワーク負荷により接続が切れることもあります。
GUI(デスクトップ環境)を起動しているとリソースを食うため、本格的な自動化ラボを目指すなら、GUIを持たないCUI(デスクトップなし)での運用も検討の余地がありそうですね。
これで、XYテーブル製作のプログラム開発も捗りそうです!






























コメント