Raspberry PiをSSHで運用する際のセットアップ方法
Raspberry Pi の公式OSはRaspberry Pi OS(以前はRaspbianと呼ばれていました)
SSHで運用するのでLite版を使います。
目次
OSイメージをmicroSDカードへ書き込む
Raspberry Pi Imagerで書き込む
書き込む方法は、いくつかありますがRaspberry Pi Imagerの方法がおすすめなのでRaspberry Pi Imager使います。
Raspberry Pi OSのサイトからRaspberry Pi Imagerをダウンロードしインストール。
Raspberry Pi OS(Other)からLite版を選択。
右下の歯車からOSの事前設定
-
- ホスト名(ルーターなど他の機器から見た際の名前)
- SSHを有効化(パスワード認証で良い)
- ユーザーとパスワードの設定
- Wifiの設定 (Wifiを使う国 JP)
- ロケール設定 (Asia/Tokyo キーボードレイアウト JP)
microSDカードへ書き込めるソフトを使い書き込む方法
書き込みソフト
- balenaEtcher
- Rufus
- Win32 Disk Imager
SSHを有効にする
初期状態ではSSHが無効になっているのでSSHを有効にするためにbootボリュームの直下にWindowsなどで、ファイル名「ssh」のファイルを作成する。
wpa_supplicant.conf ファイルを作成
SSHで操作するためには、ネットーワークに繋がっている必要があるため、WiFiを使う場合は、WiFiの設定をあらかじめ設定する。
ファイル名「wpa_supplicant.conf」のファイルを作成しWiFiの設定をする。
wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="yourwifi_ssid"
psk="wifipassword"
}
あとからWiFiネットワークを追加、変更する時は下記のコマンドで編集できます。
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
SSHクライアント
SSHで操作するためには、SSHクライアントが必要ですが、コマンドプロンプト、PowerShellでも良いので、(Windowsの左下スタートメニューを右クリックから選べます)好きなSSHクライアント選べば良いです。Windows Terminalがおすすめ。
- Windows Terminal
- コマンドプロンプト
- PowerShell
- TeraTerm
- PuTTY
Raspberry Piのデフォルト設定
- ユーザー:pi
- パスワード:raspberry
パスワードは最初に変える
SSHクライアントからのログイン方法
-p がポート番号
ssh ユーザー名@Raspberry Piのアドレス -p ポート番号
ssh [email protected] -p 22
電源
電源をオフ、再起動するコマンド。
電源をオフにする
sudo shutdown -h now
# or
sudo halt
再起動
sudo reboot
言語設定
ユーザーの設定
いずれか選ぶ
- 新しいユーザーを追加してpiユーザーを無効(推奨)
- pi ユーザー名とパスワードを変更
- pi ユーザーのパスワードを変更
新しいユーザーを追加する
新しいユーザー(alice)を追加するには、次のコマンドを入力
sudo adduser alice
新しいユーザーのホームディレクトリが作られる
/home/alice/
新しいユーザー(alice)に pi ユーザー相当の権限を与える
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi alice
新しいユーザーが動作していることを確認
sudo su - alice
piユーザーを無効、削除する
この項目は古いので次の項目に進んでください。
piユーザーを無効化
# sudoグループから削除
sudo gpasswd -d pi sudo
#sudo権限を無効化
sudo nano /etc/sudoers.d/010_pi-nopasswd
#pi ALL=(ALL) NOPASSWD: ALL
alice ALL=(ALL) PASSWD: ALL
sudo passwd pi
piユーザーを削除する
sudo deluser pi
sudo userdel -r pi
### sudoにパスワードを要求させる
強制的にsudoパスワードを要求するように、次のコマンドを入力
</del>
<del>sudo nano /etc/sudoers.d/010_pi-nopasswd</del>
<del>
ユーザー(またはスーパーユーザー権限を持つユーザー)を次のように変更。
“`alice ALL=(ALL) PASSWD: ALL
root ユーザーについて
デフォルトでは root にパスワードが設定されていなければログインも su も出来ないようになっている。suは、Switch Userの略
デフォルトでroot にパスワードは設定されていないので、そのままパスワードを設定しない。
更新
ファームウェアの更新(任意)不要
https://www.raspberrypi.org/documentation/raspbian/applications/rpi-update.md
sudo apt-get install rpi-update
sudo rpi-update
sudo reboot
パッケージの更新
sudo apt-get update
sudo apt-get upgrade
# or
sudo apt-get dist-upgrade
下記のコマンドがおすすめ
sudo apt-get update && sudo apt-get upgrade -y
(未完成) 設定
sudo raspi-config
セキュリティ設定
https://www.raspberrypi.org/documentation/configuration/security.md
未完成 SSHのセキュリティを改善
SSHの初期22ポートは攻撃対象なのでポート番号を変更する
sshの待ち受けポート番号変更
sudo nano /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
systemctl restart ssh
or
# Terminalからのログイン方法
# -p がポート番号
ssh [email protected] -p 22
SSH鍵生成
鍵ペア認証を使用
Tera TermでSSH鍵生成
公開鍵と秘密鍵の作り方
Tera TermのSCP機能を利用
最初のTera Term新しい接続ウインドウを閉じ、Tera Termのメニューから設定 > SSH鍵生成を選ぶ。
秘密鍵
id_rsa
公開鍵
id_rsa.pub
~/.ssh/id_rsa.pub
mkdir .ssh
cd ~sudo mkdir .sshcat id_rsa.pub >> .ssh/authorized_keyssudo chmod 700 .sshsudo chmod 600 .ssh/authorized_keysrm id_rsa.pub
sudo nano /etc/ssh/sshd_config
ファイアウォールをインストール
UFW
sudo apt install ufw
UFWの設定
UFWを有効にする前に、SSHが使用しているポートのアクセスを許可する
sudo ufw allow ssh
特定のポート(22)のアクセスを許可
sudo ufw allow 22
UFWの現在の設定
sudo ufw status
UFWを有効にする
sudo ufw enable
UFWを無効にする
sudo ufw disable
指定できるアプリケーションを見る
sudo ufw app list
設定を削除
sudo ufw status numberedsudo ufw delete 番号
fail2ban
sudo apt install fail2ban
設定ファイル(jail.conf)をコピーしてjail.localを使う。
jail.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localsudo nano /etc/fail2ban/jail.local
[ssh]enabled = trueport = sshfilter = sshdlogpath = /var/log/auth.logmaxretry = 6
指定したJAILルールのステータスとBAN状況を表示
sudo fail2ban-client status sshd
Fail2banのステータスを表示
sudo fail2ban-client status
Fail2ban再起動
sudo systemctl restart fail2ban
対象のIPからのパケットを REJECT(拒否)ではなくDROP(破棄) する。
sudo nano /etc/fail2ban/action.d/iptables-common.conf
blocktype = DROP
systemctl start fail2bansystemctl stop fail2ban