
ラズベリーパイにDebianをインストールしてSSH接続するまで【やること・必要なもの】
2023-02-09
2023-02-09
はじめに
こんにちは、こふです。
Raspberry Pi に Debain をインストールして SSH 接続しました。
それにあたり必要だったもの・やったことをまとめます。
具体的なコマンドや設定の変更まで、できるだけ詳細に解説します。
必要なもの
持っていない場合は購入する必要があります。
- Raspberry Pi4 ModelB 4GB
- どのモデルでも問題ありませんが、機種により端子が異なるのでケーブル準備に際しては注意してください
- このモデルなら、給電は USB-C で、ディスプレイ接続は Mini HDMI です
- USB 充電器、ケーブル
- マイクロ SD カード
- 有線 LAN(ルータ・スイッチングハブから出す)
- LAN ケーブルを用意して、接続できるようにします
- 無線 LAN 対応の Raspberry Pi で有線 LAN は面倒だと思いがちです
- しかし、設定に SSID と PW 入力が必要で面倒なので、ひとまず有線 LAN をおすすめします
- ディスプレイ・モニター(HDMI 接続など)
- 大きさは何でも良いが、大きいほうが良いです
- ターミナルで操作するため
- Raspberry Pi からの出力はミニ HDMI か通常の HDMI です
- ミニ HDMI の場合、変換アダプタなど用意必要です
- OS インストール用の PC(OS の指定はない)
手順
- インストール
- Raspberry Pi 操作
- クライアント操作
を行います。
手順 1:インストール
- Raspberry Pi Imager v1.7.3をインストール
- Debian をインストール
- マイクロ SD カードを FAT32 でフォーマット
- Raspberry Pi Imager v1.7.3で Debian を書き込む
- 書き込んだマイクロ SD カードを Raspberry Pi に差し込む
手順 2:Raspberry Pi 操作
Raspberry Pi で Debian をデスクトップ起動する
単に電源入れるだけで起動します
openssh-server のインストール・起動
- 以下の記事が分かりやすいですが、抜粋すると以下のようになります
- Enable SSH Server on Debian 11
- また、初回起動時は
root
ユーザーなのでsudo
は要らないです(任意) sudo apt update && sudo apt upgrade
sudo apt install openssh-server -y
systemctl
で起動しstatus
確認しますsudo systemctl start sshd
sudo systemctl status sshd
- こうなれば(
Active
になれば)OK です
1● ssh.service - OpenBSD Secure Shell server 2 Loaded: loaded (/lib/systemd/system/ssh.service 3; enabled; preset: enabled) 4 Active: active (running) since Mon YYYY-MM-DD HH:MM:SS UTC; X week X days ago 5TriggeredBy: ● ssh.socket 6 Docs: man:sshd(8)
ufw のインストール・起動・設定
- ファイアウォールの設定です。
- 以下の記事を同様に抜粋します
- How To Set Up a Firewall with UFW on Debian 11 | DigitalOcean
sudo apt update && sudo apt upgrade
sudo apt install ufw -y
- インストールします
sudo ufw default deny incoming
- 安全のため入ってくるパケットを全てブロックします
sudo ufw default allow outgoing
- 現状は出ていくパケットは制限しません
sudo ufw allow 22
SSH
はTCP
の 22 番ポートを使うことが一般的なので開放します
sudo ufw enable
1~/ sudo ufw status verbose 2Status: active 3Default: deny (incoming), allow (outgoing), disabled (routed) 4New profiles: skip 5 6To Action From 7-- ------ ---- 822/tcp ALLOW IN Anywhere 922 ALLOW IN Anywhere 1022/tcp (v6) ALLOW IN Anywhere (v6) 1122 (v6) ALLOW IN Anywhere (v6)
sshd の設定
- これは公開鍵での SSH が完了してから行っても問題ありません
- ユーザ名、パスワードでログインするのは良くないので、無効化して公開鍵の認証とします
- 例として、友人が家に来て PC で
ssh [email protected]
してパスワードがadmin
だった場合に Raspberry Pi に入れてしまうからです - あなたの PC を勝手に触られる想定はしてません・・・
- 例として、友人が家に来て PC で
1PasswordAuthentication no 2PubkeyAuthentication yes
その他にも
- Raspberry Pi の
ip
アドレスの確認ip a
の結果をメモしておきます
- ユーザを作成して root ログインを無効にする場合は
AllowUsers hoge
PermitRootLogin no
- と変更することとなります
- How to Add a New User on Debian 11
- ユーザ作成
- How to Create a Sudo User on Debian {3 Easy Steps}
- Sudo グループに入れて Sudo が使えるように
- root ログインを無効にしているため
手順 3:クライアント操作
- 公開鍵・秘密鍵を作成する
ssh-keygen -t rsa
などで作成します、暗号方式は適宜変えてください- また、保存先のパスは
~/.ssh/id_rsa
と仮定します - パスワード有りにしてください
- Raspberry Pi に公開鍵をコピーする
scp ~/.ssh/id_rsa.pub [email protected]:~/
- Raspberry Pi で操作(再び)
mv ~/id_rsa.pub ~/.ssh/authorized_keys
root
でない場合、scp
では権限不足で書き込めないはずなのでここでmv
します
- SSH する
ssh -vT i- ~/.ssh/id_rsa.pub [email protected]
- これで入れます
- SSH が楽なように設定する
ssh hoge
で SSH できるようにします
~/.ssh/config1Host hoge 2 HostName IPアドレス 3 IdentityFile ~/.ssh/公開鍵のパス 4 User root 5 Port 22 6 TCPKeepAlive yes 7 UserKnownHostsFile /dev/null 8 PreferredAuthentications publickey
- パスワード入力を省略する
ssh-add ~/.ssh/省略したい秘密鍵のパス
をします
Raspberry Pi OS だと実はもっと楽・・・
Raspberry Pi OS の場合 Raspberry Pi からroot
でないユーザーの、PORT 解放、公開鍵の配置が GUI で書き込み時に可能で、非常に楽だと思います。

Raspberry Pi OS でない Debian だと手間が増えますが、現実はこれが普通だと思うので我慢です。
OS 書き込みを工夫することで設定ファイルの上書き・公開鍵の配置ができるのなら問題ないですが・・・
おわりに
これでできることが増えますし、何かと勉強になります。