数年前に購入したRaspberry Piを真面目に運用しようかと思い立ち改めて初期設定をしていた際に少し詰まったため、手順をメモとして残します。普段は解説記事等を参考にさせていただくことが多いですが、最終的には公式ドキュメントしか勝たん、と思う機会も多いです。
OSのインストール
まず、micro SDカードにOSを入れます。Raspberry Pi Imagerをお手元のパソコンにダウンロードし、指示にしたがって進めていくと、micro SDカードにOSをインストールすることができます。OSインストール時にWi-Fiの設定やSSH接続の有無、公開鍵の登録などをまとめて行うことができます。便利ですね。今回はGUIを使う予定がないため、Raspberry Pi OS Lite (64-bit)
をインストールしました。
SSH設定の変更
こちらのサイトを参考にしました。
Raspberry Piに公開鍵を登録する
(OSインストール時に設定した場合は不要です)
- ssh接続もとのパソコン(ノートPCなど)で秘密鍵・公開鍵を生成する
例えばssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
など - 生成した公開鍵(
~/.ssh/id_ed25519.pub
など)をRaspberry Piに転送するscp -P 22 ~/.ssh/id_ed25519.pub <raspberrypi-username>@raspberrypi.local:~/
- Raspberry Piのホームディレクトリ(
/home/<raspberrypi-username>
)に.ssh
ディレクトリを作成する .ssh
ディレクトリの権限を700に変更する(chmod 700
)/home/<raspberrypi-username>
/.ssh- 公開鍵
id_ed25519.pub
を/home/<raspberrypi-username>/.ssh/authorized_keys
に登録するcat id_ed25519.pub >> /home/<raspberrypi-username>/.ssh/authorized_keys
/home/<raspberrypi-username>/.ssh/authorized_keys
の権限を600に変更するchmod 600 /home/<raspberrypi-username>/.ssh/authorized_keys
SSH設定の変更
セキュリティ上の理由で、以下のようにssh接続の設定を変更する必要があります。
- rootでのログインを禁止
- パスワードを用いたログイン(認証)を禁止し、公開鍵認証のみ許可する
- sshに用いるポート番号を変更する
sudo nano /etc/ssh/sshd_config
でsshd_config
ファイルを開く(エディタはnano
でなくても良い)PermitRootLogin
をno
にする(rootでのログインを禁止)PasswordAuthentification
,PermitEmptyPasswords
をno
にする(パスワード認証を禁止)PubkeyAuthentification
をyes
に、AuthorizedKeyFile
を.ssh/authorized_keys
に設定する(公開鍵認証を許可)Port
を任意の数字(49152~65535のどれか)に設定する(ssh接続に用いるポートを変更)- ssh設定の変更を反映させる(
sudo /etc/init.d/ssh restart
)
ファイアウォールの設定
ufw
を用いてファイアウォールを設定します。
ufw
をインストールする(sudo apt install ufw
)- ファイアウォールの状態を確認する(
sudo ufw status
) - 全ポートのアクセスを拒否する(
sudo ufw default deny
) - 必要なポートへのアクセスを許可する(
sudo ufw allow <port number>
)
VNC: 5900/tcp
ssh: 設定したPort
の値/tcp
インターネット通信の標準: 80/tcp
SSL通信の標準ポート: 443/tcp
NTPサーバー時刻同期に使うポート: 123/udp - ファイアウォールを有効化する(
sudo ufw enable
) - 再起動して設定を反映させる(
sudo reboot
)
外付けHDDのマウント
今回一番詰まったのはHDDの自動マウントです。/etc/fstab
をいじって再起動したらOSが起動しなくなりました。(類似事例)ひとまず手動マウントから手順を説明します。
HDD(USB接続できる外部ストレージ)の手動マウント
- Raspberry Piが認識している外部ストレージ一覧を取得する
sudo fdisk -l
を実行すると、接続されているストレージ情報が、Device Start End Sectors Size Type
の順番で表示されます。私の場合は/dev/sda2
がマウントしたいHDDでした。 - (HDDがフォーマット前の場合)HDDを
<format type>
でフォーマットするsudo mkfs -t <format type> /dev/sda2
Raspberry Pi OSがデフォルトでサポートしていないファイルシステム(exFATやNTFS)でフォーマットする場合は、対応するドライバをインストールする必要があります。
exFAT:sudo apt install exfat-fuse
NTFS:sudo apt install nfts-3g
- マウント先のディレクトリを作成する
例えばsudo mkdir /mnt/data
などでディレクトリを作成したのち、権限を777に変更(sudo chmod 777 /mnt/data
)する - マウントする
sudo mount -t exfat -o rw /dev/sda2 /mnt/data/
Raspberry Pi起動時に自動マウントされるよう設定する
/etc/fstab
を編集します。正しく設定できていないとOSが起動しない場合があるので注意。
sudo blkid
を実行してディスクパーティションの情報(特にUUID
とfstype
)を取得するsudo nano /etc/fstab
を実行してファイルを開く/etc/fstab
にUUID=xxxx-xxxx /mnt/data <fstype> defaults,auto,users,rw,nofail 0 0
を追加する。UUID=xxxx-xxxx
にはステップ1で調べたUUID
の値を入れてください。- 正しく設定できているか確認
sudo umount /mnt/data
でマウントを解除したのち、sudo mount -a
を実行することで正しく設定できているか確かめることができます。このコマンドを実行して何らかのエラーが発生した場合、再起動した際にOSが起動しない可能性が高いです。公式ドキュメント等を参考に、間違いがないか見直しましょう。 - 正しくマウントできたら、書き込み・読み込みが正常に行えるか確認
mkdir /mnt/data/test
等のコマンドが実行できればよし。
マウントしたディレクトリにフォルダを作成できない場合
/mnt/data
の所有者をroot
から/mnt/data
にアクセスしたいユーザーやそのユーザーが所属するグループに変更する必要があります。このサイトで紹介されているように、chown
コマンドを用いるもあります。
chown
コマンドでうまくいかない場合は、/etc/fstab
の内容を見直すことになります。解決策として、こちらのサイトで記述されているようにmount
オプションにuid
やgid
を追加することでうまくいく可能性があります。オプションの追加によって、マウントしたディレクトリ/mnt/data
の所有者がroot
でなく、オプションで指定したユーザー・グループになることが期待されます。
ユーザーidやグループidはid
コマンドで確認できます。グループについてはgroups
コマンドやcat /etc/group
でも確認することができます。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント