見出し画像

ラズパイで始めるローカルAI #03|パスワードなしでスッと入れる!SSH鍵認証とヘッドレス運用

こんにちは!YaroTechです。

シリーズ「ラズパイで始めるローカルAI 〜クラウドに頼らない!5台で団結するローカルLLMの冒険〜」第3回です。

前回(#02)で1台のRaspberry Pi 4にOSをインストールし、SSH接続にも成功しました。でも、毎回パスワードを入力するのは面倒ですよね。しかも、再起動するたびにIPアドレスが変わる可能性もある。

今回は「ssh raspi01」の6文字だけでパスワードなしログインできる環境を作ります。

完成すれば、モニターもキーボードも完全に不要。PCのターミナルからスッとラズパイに入れる、真のヘッドレス運用です!

💡 「ヘッドレス運用」とは?
ラズパイにモニターやキーボードを繋がず、別のPCからネットワーク経由で操作する使い方のこと。いわば「頭(画面)がない(レス)」状態です。ラズパイ本体は電源さえ繋がっていれば、棚の上に置きっぱなしでOK。自分の普段使いのPCからリモコン操作するイメージです。

そのリモコン操作に使うのがSSH(エスエスエイチ)という仕組み。簡単に言えば、「ネットワーク越しに安全に他のPCを操作できるトンネル」のようなものです。前回パスワードを毎回入力して接続していましたが、今回はそれをもっと便利にしていきます!

※見出し画像のプロンプトは一番下におまけで公開中!



🖥️ 実行環境

Raspberry Pi:

  • Raspberry Pi 4 Model B / 2GB RAM × 1台

  • Raspberry Pi OS Lite (64-bit) Trixie(Debian 13)

  • ホスト名: raspi-llm01

  • microSD 64GB(class10)

作業PC:

  • ThinkPad X1 Carbon

  • Windows 11 Home 25H2

  • RAM 32GB

  • PowerShell


🎯 この記事で得られること

  • 固定IPアドレスの設定方法(再起動してもIPが変わらない)

  • SSH鍵認証の設定(パスワード入力が不要に)

  • .ssh/configでエイリアス設定(`ssh raspi01`だけで接続)

  • 5台のクラスターを見据えたIP設計


📋 前回からの振り返り

前回(#02)で以下が完了しています。

  • Raspberry Pi OS Lite (64-bit) Trixie をインストール

  • Wi-Fi接続&SSH接続成功

  • 箱は4GBなのに実は2GBモデルだった(Revisionコードで判明)

  • `apt update && apt upgrade` 完了

関連記事: ラズパイで始めるローカルAI #02|眠っていたPi 4を起こす!OS書き込みから初回起動まででは、OSセットアップの全手順を詳しく紹介しています。

今回は、このSSH接続を安定運用レベルに引き上げます。


🔧 Step 1: 固定IPアドレスの設定

まずは前回と同じようにSSHでラズパイに接続します。

ping raspi-llm01.local
ssh iotlab_llm@raspi-llm01.local

なぜ固定IPが必要?

現在はルーターが自動でIPアドレスを割り振っています(DHCP)。これだと再起動のたびにIPが変わる可能性があり、5台のクラスターを組むときに管理が大変になります。

現在のネットワーク状況を確認

ip addr show wlan0

私の環境では`192.168.50.144`が自動で割り振られていました。

ネットワーク上のデバイスをスキャン

固定IPを決める前に、使われているIPを確認します。

sudo apt install nmap -y
nmap -sn 192.168.50.0/24

我が家のネットワークには23台のデバイスが接続されていました(SwitchBotやESPなどのIoT機器がたくさん)。200番台がほぼ空いていたので、ラズパイクラスター用に201〜205を予約することにしました。

  • `192.168.50.201` → raspi-llm01(今回)

  • `192.168.50.202` → raspi-llm02(将来)

  • `192.168.50.203` → raspi-llm03(将来)

  • `192.168.50.204` → raspi-llm04(将来)

  • `192.168.50.205` → raspi-llm05(将来)

Wi-Fi接続名を確認

nmcli con show

接続名を確認します。私の環境では「netplan-wlan0-ASUS Zen WiFi AX6600」でした(ルーター名が入っています)。

固定IP設定を適用

sudo nmcli con mod "(接続名)" ipv4.method manual ipv4.addresses 192.168.50.201/24 ipv4.gateway 192.168.50.1 ipv4.dns "192.168.50.1,8.8.8.8"

設定を反映します。

sudo nmcli con up "(接続名)"

「Connection successfully activated」と表示されれば成功です!

確認

ip addr show wlan0

`192.168.50.201/24` と `valid_lft forever` が表示されていればOK。`forever`は「DHCPのリース期限なし=固定IP」を意味します。


🔑 Step 2: SSH鍵認証の設定

毎回パスワードを入力するのは面倒ですし、クラスター管理時にスクリプトで一括操作するなら鍵認証は必須です。

一旦SSHから抜けて、作業PC側(X1のPowerShell)で操作します。

exit

鍵ペアを生成

ssh-keygen -t ed25519 -C "raspi-llm-cluster"

質問には以下のように回答します。

  • 保存場所: そのままEnter(デフォルトでOK)

  • パスフレーズ: 空のままEnter × 2回

ed25519は最新の暗号方式で、RSAより短い鍵長で同等以上のセキュリティを持っています。

公開鍵をラズパイに転送

Windowsでは`ssh-copy-id`が使えないので、以下のコマンドで転送します。

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh iotlab_llm@192.168.50.201 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

パスワードを聞かれるので入力します。これが最後のパスワード入力です!
※元々のログインで設定したパスワードです。

パスワードなしでログインできるかテスト

ssh iotlab_llm@192.168.50.201

パスワードを聞かれずにログインできたら成功です!


⚡ Step 3: .ssh/configでエイリアス設定

`ssh iotlab_llm@192.168.50.201`はまだ長い。これを**`ssh raspi01`だけで接続**できるようにします。

SSHから抜けて、作業PC側で設定ファイルを作成します。

exit

⚠️ ここで注意!メモ帳を使ってはいけません

最初、Windowsのメモ帳(notepad)で`.ssh/config`を作成したところ、UTF-16エンコーディングで保存されてしまい、SSHが「Could not resolve hostname」エラーを出しました。

PowerShellで直接作成するのが確実です。

@"
Host raspi01
    HostName 192.168.50.201
    User iotlab_llm
    IdentityFile ~/.ssh/id_ed25519

Host raspi02
    HostName 192.168.50.202
    User iotlab_llm
    IdentityFile ~/.ssh/id_ed25519

Host raspi03
    HostName 192.168.50.203
    User iotlab_llm
    IdentityFile ~/.ssh/id_ed25519

Host raspi04
    HostName 192.168.50.204
    User iotlab_llm
    IdentityFile ~/.ssh/id_ed25519

Host raspi05
    HostName 192.168.50.205
    User iotlab_llm
    IdentityFile ~/.ssh/id_ed25519
"@ | Out-File -FilePath $env:USERPROFILE\.ssh\config -Encoding ascii

将来の5台分も先にテンプレートとして入れておきました。

最終テスト!

ssh raspi01

パスワードなし、6文字だけでログイン完了!これがヘッドレス運用の完成形です。


⚠️ つまずきポイントと注意点

注意点1: Windowsのメモ帳でSSH configを作らない

メモ帳はデフォルトでUTF-16(BOM付き)で保存するため、SSHが設定ファイルを正しく読めません。PowerShellの`Out-File -Encoding ascii`、またはVSCodeなどUTF-8対応のエディタを使いましょう。

注意点2: 固定IP設定後にSSH接続が切れることがある

`nmcli con up`でIPアドレスが変わるため、SSH接続が切れることがあります。切れた場合は新しいIPアドレス(192.168.50.201)で再接続すればOKです。

注意点3: ルーターのDHCPレンジとの重複に注意

固定IPがルーターのDHCP自動割り当てレンジと重複すると、他のデバイスと衝突する可能性があります。nmap等で使用中のIPを確認してから、空いている番号帯を選びましょう。200番台は比較的安全です。

注意点4: シャットダウンは必ずコマンドで

前回も紹介しましたが、大事なことなので繰り返します。電源ケーブルをいきなり抜くのはNG。

sudo shutdown -h now

緑LED消灯後に電源ケーブルを抜きましょう。


🔗 関連記事

今回の内容に関連する過去記事もぜひご覧ください:


📝 まとめ

今回はラズパイシリーズ#03として、完全ヘッドレス運用環境を構築しました。

達成したこと:

  • 固定IP: `192.168.50.201`(再起動してもIPが変わらない)

  • SSH鍵認証: パスワード入力が不要に

  • エイリアス: `ssh raspi01` の6文字だけで接続

  • クラスター設計: 5台分のIP(201〜205)とconfig設定を先行準備

Before → After:

  • Before: `ssh iotlab_llm@raspi-llm01.local` → パスワード入力

  • After: `ssh raspi01` → 即ログイン!

地味ですが、この「スッと入れる」感覚が毎日の運用では大きな差になります。5台に拡張したときも同じ手順で設定するだけです。


🚀 次回予告

#04では 、いよいよ軽量LLM(Ollama)のインストールと動作確認に挑みます!

  • 2GBのPi 4でOllamaは動くのか?

  • TinyLlamaやPhi-2でどこまで会話できる?

  • tok/s(1秒あたりのトークン生成数)の実測

2GBという厳しい制約の中、どこまでLLMが動くか。正直、結果は予測できません。成功も失敗もリアルにレポートします。お楽しみに!


🎨 おまけ:見出し画像作成プロンプト

今日の見出し画像のベースはジミー(Gemini)に下記プロンプトで作成してもらいました!:

詳細なアニメの美意識の画像を作成してください。表情豊かな瞳、なめらかな網掛けセルの色使い、はっきりした線画を使用します。アニメのシーンに典型的な身ぶりと雰囲気で、心情と登場人物の存在を強調してください。

下記条件のnote見出し画像をサイズは横長で作成してください。サイズは必ず横長で作成してください。

### デザインコンセプト
- **背景**: ダークブルー→パープルのグラデーション(セキュリティ・通信をイメージ)
- **メインビジュアル**: 
  - 中央にノートPCのターミナル画面を操作するキャラクター
  - ターミナルに「ssh raspi01」と表示
  - 鍵のアイコンが光っている
  - ラズパイがワイヤレスで接続されている様子
  - 「#03」の数字が大きく装飾的に配置
- **テキスト要素**:
  - 上部: 「ラズパイで始めるローカルAI」(大きく・太字・白色)
  - 中央: 「パスワードなしでスッと入れる!」(中サイズ・白色)
  - 下部: 「#03|SSH鍵認証とヘッドレス運用」(小サイズ・白色)
- **装飾**: 鍵アイコン、Wi-Fiの電波、暗号化を示す鍵穴パターン

### 作成手順
1. スライドサイズ(1536×1024px)の横長フォーマット
2. 背景にダークブルー→パープルのグラデーションを設定
3. 中央にノートPCを操作するキャラクターを配置
4. ターミナル画面に「ssh raspi01」を表示
5. 鍵アイコンとワイヤレス接続の視覚表現を追加
6. テキストを3段構成で追加:
   - 上部: 「ラズパイで始めるローカルAI」(48pt、太字、白色)
   - 中央: 「パスワードなしでスッと入れる!」(36pt、白色)
   - 下部: 「#03|SSH鍵認証とヘッドレス運用」(24pt、白色)
7. 下部中央寄りに「YaroTech」のロゴを12ptで控えめに配置
8. 全体のバランスを確認して完成

※シリーズ#01-#02と統一感を持たせつつ、セキュリティ・接続の安心感を表現
※「スッと入れる」快適さをビジュアルで伝える

#YaroTech #AI活用 #生成AI #RaspberryPi #ラズパイ #ローカルAI #LLM #SSH #ヘッドレス #セキュリティ

いいなと思ったら応援しよう!

YaroTech|生成AIの傾奇者 記事がお役に立てたなら嬉しいです! いただいたチップは、新しいMCPツールの検証や、より深い実践実験の資金として大切に使わせていただきます。 あなたの応援が次の「AI活用の感動」を生み出す原動力になります✨ 一緒に羽ばたき続けましょう!