数年前に購入した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でも確認することができます。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント