はじめに
Raspberry Pi 4 のリモート接続を構築した。
持ち歩くことも多そうなので、基本的なセキュリティ設定をしていきます。
実現したいこと
- Raspberry Pi をネットワークに接続する上で、最低限必要なセキュリティ設定を行う
環境
- 作業PC
- OS:Windows 11 Home
- Version:22H2
- プロセッサ:11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz 3.00 GHz
- RAM:16GB
- Raspberry Pi 4 Model B
最低限必要なセキュリティ設定
作業PC側で鍵を作成する
- Windows PowerShell を開く
-
ssh-keygen -t ecdsa -f .ssh/tkmsk-raspberrypi
を入力し、ECDSA暗号方式でtkmsk-raspberripiという名前の鍵を作成する
パスフレーズは任意の文字を入力する
Raspberry Pi に公開鍵を登録する
※.ssh/authorized_keys
に公開鍵が既に登録されている場合は、手順6、8のみでOK
- 作業PCのWindows PowerShellから
scp -P 22 .ssh/tkmsk-raspberrypi.pub tkmsk@raspberrypi.local:/home/tkmsk
を入力し、公開鍵をRaspberry Piに転送する - VNC でRaspberry Piに接続する
- LXTerminalを開く
-
mkdir ~/.ssh
を入力し、鍵を入れるディレクトリを作成する -
chmod 700 ./ssh
と入力し、.ssh
ディレクトリのパーミッションを700(rootユーザーのみ読み/書き/実行可能)に変更 -
cat tkmsk-raspberrypi.pub >> .ssh/authorized_keys
と入力し、公開鍵を登録する -
chmod 600 ./ssh
と入力し、.ssh
ディレクトリのパーミッションを600(rootユーザーのみ読み/書き)に変更 -
rm tkmsk-raspberrypi.pub
を入力し、tkmsk-raspberrypi.pubを削除する
Raspberry Pi のssh設定を変更する
-
sudo nano /etc/ssh/sshd_config
を入力し、sshd_configファイルを開く -
PasswordAuthentication
をno
に設定する -
PermitEmptyPasswors
をno
に設定する -
Port
を任意の数字(49152~65535の中のどれか)に設定する -
PermitRootLogin
をno
に設定する -
PubkeyAuthentication
をyes
に設定する -
AuthorizedKeysFile
を.ssh/authorized_keys
に設定する
Raspberry Pi のファイアウォール設定を変更する
-
sudo apt install ufw
を入力し、ufw
をインストールする -
sudo ufw status
と入力し、ファイアウォールの状態を確認する
※inactive
でない場合は、sudo ufw disable
を入力してinactive
に変更する -
sudo ufw default deny
を入力し、全ポートのアクセスを拒否する -
sudo ufw allow <ポート番号>
を入力し、必要なポートのアクセスを許可する- VNC: 5900/tcp
- ssh: (Raspberry Piで設定したPort番号)/tcp
- インターネット通信の標準ポート: 80/tcp
- SSL通信の標準ポート: 443/tcp
- NTPサーバー時刻同期に使うポート: 123/udp
-
sudo ufw enable
と入力し、ファイアウォールを有効にする -
sudo reboot
と入力し、Raspberry Piを再起動し、設定を反映させる
備考
VSCodeのssh接続設定を変更する
- VSCodeのリモートエクスプローラーの設定ファイルを開く
- Raspberry Piの設定の
Port
をRaspberry Piに設定したポート番号に変更する - Raspberry Piの設定の
IdentiyFile
に~/.ssh/tkmsk-raspberrypi
を設定する - Raspberry Piの設定の
IdentitiesOnly
をyes
に設定する
まとめ
これで最低限のセキュリティ設定ができたので、ある程度安心してネットワークにつないで使えるかなと思います。