0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows 10 で Raspberry Pi 4 のセットアップ方法まとめ

Last updated at Posted at 2020-04-07

Raspberry Pi 4B を2回目のセットアップすることになったが、1 回目の手順を何も覚えていないので自分の覚書という意味も含め書く。複数記事を参照して、自分流に要らないところを削って簡潔にまとめてるのでパクリじゃないです!タイトルにもありますが、Windows 向けのやり方です。

目標

  • Raspberry Pi に電源ケーブル以外を 1 度も接続しない
  • SSH で接続する
  • セキュリティ対策
  • スワップ領域を失くしたりログ書き込みを減らしたり

必要なもの

  • 無線 LAN の環境
  • Raspberry Pi
  • Windows または Mac のPC
  • 8GB 以上の micro SD カード (4GB でもいいの??)

また、必要に応じて以下も用意しましょう。

  • PC と micro SD カードを接続するアダプタ

環境

今回 Raspberry Pi にセットアップする環境

  • Raspberry Pi 4B
  • Raspbian 4.19 (2020-02-13)
  • 32 GB micro SD カード

そしてセットアップに使用する PC は Windows 10 です。

下準備

SSH のクライアントとして Tera Term を使います。Windows には標準で SSH クライアントが入ってるのですが、Windows では鍵生成が面倒なので Tera Term をオススメします。下記リンクよりダウンロードし、お使いの PC にインストールしましょう。

手順

それでは早速、やっていくぅ!

micro SD に OS を書き込む

まず、micro SD カードに OS イメージを書き込む必要があります。

公式から Raspberry Pi Imager というイメージ書き込みソフトが配布されているので、ありがたく利用しましょう。

上記のスクリーンショットの青枠部分から、お使いの PC の OS の物をダウンロードしましょう。ダウンロードしている間に micro SD カードを PC に挿入しておきます。
ダウンロードが完了したらファイルを実行し Raspberry Pi Imager をインストールしてください。

それでは、インストールした Raspberry Pi Imager を起動していい感じにやっていきましょう。起動したら表示される画面に 3 つぐらいボタンが出ています。OS と SD カードを選択したら「Write」がクリックでようになります。

Raspberry Pi Imager
Raspberry Pi Imager OS 選択

OS は、スクリーンショットの赤枠で囲んだ「Raspbian」を選択します。Raspbian にも複数バージョンあり、Full 版や GUI なしの Lite 版は上から 2 番目の「Raspbian (ohter)」の中にありますが、今回は通常の Raspbian を使います。

SD カードは、希望の物を選択してください。

「Write」をクリックすると OS イメージの書き込みが始まりますが、ネットワーク経由でイメージファイルをダウンロードしてから書き込むので少し時間がかかります。この間にコーヒーでも飲んで一段落しましょう。

無線 LAN の設定

書き込みが終わっても、micro SD カードは Raspberry Pi に挿しません。Raspberry Pi を起動したら自動で無線 LAN に接続されるように設定します。

micro SD カードのディレクトリに移動して、wpa_supplicant.conf ファイルを作成します。ssid には接続したい無線 LAN アクセスポイントの SSID を、psk にはアクセスポイントのパスワードを入力します。

wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="接続する無線 LAN のSSID"
    psk="パスワード (キーフレーズ)"
}
UNIX 系 OS (Mac など) の場合や、UNIX 系の端末を使用できる場合
UNIX 系 OS では、`wpa_passphrase` コマンドでパスワードを暗号化できます。
$ apt install wpa_passphrase  # wpa_passphrase コマンドをインストールすれば何でもいいです

$ wpa_passphrase ssid password  # ssid, password は接続したいアクセスポイントのものを入力する
network={
        ssid="ssid"
        #psk="password"
        psk="暗号化されたパスワード"
}

取得した暗号化されたパスワードを、wpa_supplicant.confpsk に入力します。

SSH の有効化

PC から無線 LAN 経由で Raspberry Pi にログインするために、SSH を有効化します。

SSH を有効化するには中身が空の ssh ファイルを作成します。micro SD カードのディレクトリに移動して、type nul > ssh を入力すれば OK です。

Windows
PS E:\> type nul > ssh

ちなみに SSH とは、ネットワーク経由でホストにログインして操作する技術です。

Raspberry Pi を初起動

ここまで来て初めて Raspberry Pi を起動します。Raspberry Pi に micro SD カード、電源の順に接続します。
電源を接続したら勝手に起動するので、2, 3 分程待ちましょう。

2, 3 分経ったら、Raspberry Pi に SSH 接続してみましょう。Raspberry Pi のデフォルトのユーザーは pi で、パスワードは raspberry です。ホスト名は raspberrypi.local です。

Tera Term を起動して、ホスト名を入力します。
7e11d976bc7d1361e599f8a38cd9874c.png

OK をクリックすると「警告」的なのが出ますが無視して続行、ユーザー名とパスワードを入力し、ログインします。
70d5bb847ac028be3da3d85271612cf7.png

OK をクリックするとなにやら英語の文が表示された後、以下のように表示されたら Raspberry Pi への SSH 接続は OK です!

SSH
pi@raspberrypi:~ $ 

起動時の自動ログインをオフにする

Raspberry Pi は通常、GUI モードで起動して pi ユーザーに勝手にログインしてしまいます。このまま次の手順で都合が悪いので、pi ユーザーへの自動ログインをオフにします。

SSH
$ sudo raspi-config

で設定画面が出るので、十字キーとエンターキーを入力し、3 Boot OptionsB1 Desktop/CLIB1 Console を選択してください。Esc で設定画面から抜けられます。

SSH
$ sudo reboot

で再起動し、2, 3分後に再度 SSH で接続してみましょう。SSH 接続の練習です。

新規ユーザーの作成と pi ユーザーの削除

SSH 接続したら以下のような警告メッセージが表示されます。

SSH
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

これは、「あんた pi ユーザーで SSH 接続してるけど、パスワードがデフォルトのままやから、不正アクセスの危険が危ないで!あかん、今すぐ変えりや!」って教えてくれてます。

ということで、新しいユーザーを作成して pi ユーザーをさっさと削除しましょう。

root パスワードを設定

root (管理者権限) にパスワードを設定します。

SSH
$ sudo passwd root
New password:  # 新しいパスワードを入力
Retype new password:  # 新しいパスワードを再入力
passwd: password updated successfully

ユーザーを追加

自分用のユーザーを新しく作成します。

SSH
$ sudo adduser ○○  # "○○" に作成したいユーザー名
Adding user `○○' ...
Adding new group `○○' (1001) ...
Adding new user `○○' (1001) with group `○○' ...
Creating home directory `/home/○○' ...
Copying files from `/etc/skel' ...
New password:  # ユーザーに設定したいパスワードを入力
Retype new password:  # パスワードを再入力
passwd: password updated successfully
Changing the user information for ○○  # ユーザー情報を追加するよ
Enter the new value, or press ENTER for the default  # 情報を入力するか、Enter で飛ばしてね。全部飛ばしても OK
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]  # 5 項目に問題無ければ "y" を入力

新ユーザーへの権限付与

先程作成した新しいユーザーに権限を付与します。

SSH
$ groups pi  # pi ユーザーの権限を確認
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio

# 新ユーザーを pi ユーザーと同等のグループに追加
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio ○○

$ groups ○○  # 新ユーザーの権限を確認
○○ : ○○ adm dialout cdrom sudo audio video plugdev games users input netdev pi spi i2c gpio

また、パスワード無しで sudo できるようにします。

SSH
$ sudo visudo

これでエディタが開くので、〇〇 ALL=(ALL) NOPASSWD: ALL を追記します (〇〇は新ユーザー)。
エディタは Ctrl+O で保存、Ctrl+X で閉じられます。

新ユーザーでのログイン確認

新ユーザーでログインできるか確かめてみましょう。

exit と入力してログアウトし、Tera Term をもう一度起動して、認証画面で新しいユーザーの情報を入力します。

ログインできなかった場合は、上記の手順をちゃんと行っているか、パスワードの入力を間違っていないか、などを落ち着いて確認しましょう。
これからは毎度この新ユーザーでログインします。

pi ユーザーを削除する

あの忌々しい警告メッセージはもう見たくないので、pi ユーザーを削除します。

SSH
$ sudo userdel -r pi  # pi ユーザーを削除
userdel: group pi not removed because it has other members.
userdel: pi mail spool (/var/mail/pi) not found

$ id -a pi  # 削除されたか確認
id: ‘pi’: no such user 

SSH で鍵認証のみ許可する

現在は SSH 接続をする時にパスワードを入力していますが、パスワードが破られると危険です。SSH では公開鍵と秘密鍵というものを使って認証することにより安全性が増すと言われています。ということで、鍵認証が使えるように設定していきます。

公開鍵認証についてはよくわからないので解説しません。以下の記事が参考になります。

公開鍵/秘密鍵 を生成する

Tera Term の機能で簡単に生成できるので、使わない手はありません。
その前に、鍵を入れておくフォルダを作ります。ユーザーフォルダ直下に .ssh フォルダが無ければ作成しておきましょう。

C:\Users\〇〇> mkdir ./.ssh

Tera Term を起動したら認証画面などが表示されますが、「キャンセル」を押して真っ黒の画面にして、ツールバーから「設定」→「SSH鍵生成」をクリックします。
Desktop Screenshot 2020.04.07 - 16.05.51.03.png

鍵の種類は「RSA」、ビット数は「2048」のままで「生成」をクリックします。「鍵のパスフレーズ」が入力できるようになりますが、入力してもしなくてもいいです。
最後に「公開鍵を保存」をクリックして、先程作成した C:\Users\〇〇\.ssh フォルダに保存します。秘密鍵も同じです。既に他の鍵が入っている場合は何か一意の名前をつけて保存しておきましょう。何も入っていない場合はそのままの名前でいいです。この先の解説はデフォルトの名前で保存したとして書いています。

公開鍵は、SSH 接続でホスト、サーバー側に配置する鍵です。誰に見られても構いません。「id_rsa.pub」です。
一方で、秘密鍵はクライアントとなる自分の PC に配置します。ネットワークで転送したり誰かに見られたりすると危険です。「id_rsa」です。

公開鍵を転送する

生成した公開鍵を Raspberry Pi に転送して、公開鍵を使用できるようにしましょう。

公開鍵の転送には Tera Term の SCP 機能を使います。Tera Term で Raspberry Pi にSSH 接続した後、ツールバーの「ファイル」→「SSH SCP」をクリックします。
Desktop Screenshot 2020.04.07 - 16.19.56.14.png
037e533d8a9aa1bf3c02b4de08391f2a.png

赤色で囲んだ「…」ボタンをクリックし、先程保存した公開鍵「id_rsa.pub」を選択し、青色で囲んだ「Send」ボタンをクリックすると、ファイルが Raspberry Pi に転送されます。

公開鍵を設定する

再び Raspberry Pi の画面に戻ります。

先程転送した公開鍵は Raspberry Pi のホームディレクトリに入っているはずなので、確認します。

SSH
$ dir
id_rsa.pub

「id_rsa.pub」があれば OK です。無ければ、転送し直しましょう。

次に、転送した公開鍵を「authorized_keys」というファイルに追加して、使用可能な状態にします。具体的には「ssh フォルダを作成する」「公開鍵を書き込む」「authorized_keys のパーミッションを変更する」「公開鍵を削除する」というステップを踏みます

SSH
# ホームディレクトリに .ssh フォルダを作成
$ mkdir ~/.ssh

# 公開鍵を authorized_keys に追加する
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

# フォルダのパーミッションを 700 に変更
$ chmod 700 ~/.ssh

# authorized_keys のパーミッションを600に変更
$ chmod 600 ~/.ssh/authorized_keys

# 公開鍵を削除する
$ rm ~/id_rsa.pub

# SSH を再起動
$ sudo /etc/init.d/ssh restart

公開鍵認証でのログイン確認

公開鍵認証を設定したら、それでログインできるかを確かめます。SSH 接続は一旦切断して、再度 Tera Term を起動します。SSH 認証の画面でユーザー名を入力した後、下の「認証方式」から「RSA/DSA/ECDSA/ED25519認証を使う」にチェックを選択し、秘密鍵には先程保存した秘密鍵を選択します。
37e533d8a9aa1bf3c02b4de08391f2a.png

これでログインできたら成功です。再起動などを試しても鍵ではログインできなかった場合、絶対にこの次には進まないでください。設定に間違いが無いかを再度確認しましょう。

公開鍵認証による接続のみ許可する

公開鍵認証が使えるようになったので、SSH の際はパスワード認証を拒否する設定にします。ついでに他にもいくつか設定を修正します。

SSH
$ sudo nano /etc/ssh/sshd_config
  • #PasswordAuthentication yesPasswordAuthentication no SSD でのパスワードを拒否
  • #PermitEmptyPasswords noPermitEmptyPasswords no 空パスワードを無効
  • #PermitRootLogin prohibit-passwordPermitRootLogin no root ログインを無効
  • #Port 22 の 22 を 49152 ~ 65535 の中から好きな数字に変更 (例: Port 56789)

いずれも先頭のハッシュタグに気をつけましょう。
Ctrl+O で保存、Ctrl+X で終了です。

最後に sudo /etc/init.d/ssh restart で SSH を再起動し、設定を反映します。

ファイアウォールを設定する

サーバー用途の事も考え、ファイアウォールを設定しておきます。ufw を使います。

SSH
$ sudo apt-get install ufw -y

$ sudo ufw default deny  # 全拒否
$ sudo ufw allow (SSH のポート番号)  # SSH を許可
$ sudo ufw allow vnc  # VNC を許可
$ sudo ufw enable  # ufw を有効化

ちなみに sudo ufw enable を実行すると Command may disrupt existing ssh connections. Proceed with operation (y|n)? y と聞かれます。ファイアウォールを設定すると SSH に影響が出る可能性があると言っているのですが、SSH を許可する時に入力したポート番号が間違って無ければ続けて OK です。

日本語化、タイムゾーン設定

慣れ親しんだ日本語で、そして普段使っている日本の時刻で使いたいので設定します。

SSH
$ sudo raspi-config

言語設定は 4 Localization OptionsI1 Change Locale → 十字キー上下で ja-JP UTF-8 UTF-8 でスペースキーを押下しアスタリスクが表示されれば OK。Enter を押したらデフォルトを選択する画面になるので、ja-JP UTF-8 UTF-8 選択状態で Enter を押したら日本語化完了。
タイムゾーンは4 Localization OptionsI2 Change TimezoneAsiaTokyo で OK。

スワップを無効化する

RAM が足りなくなった時に micro SD 上にスワップが作られますが、micro SD の書き込み頻度が上がると壊れやすくなるので無効化します。

SSH
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi        71Mi       1.5Gi       8.0Mi       297Mi       1.7Gi
Swap:            0B          0B          0B

free -hSwap のところに 0 が並んでたら無効化成功です。再起動しても 0 のままだったらスワップの自動起動も無効にできています。

不要なログ書き込みを削る

ログ書き込みも同じように micro SD への書き込み頻度が上がるので、絞っていきます。

SSH
$ sudo nano /etc/rsyslog.conf

$ sudo systemctl restart rsyslog  # ログを再起動

maildebug から始まるやつは取り敢えずコメントアウトしました。編集し終わったらログサービスを再起動しておきましょう。

起動時の自動ログインを元に戻す

最初の方にオフした起動時の自動ログインをオンに戻します。

SSH
$ sudo raspi-config

3 Boot OptionsB1 Desktop/CLIB4 Desktop Autologin を選択。Raspberry Pi の再起動も忘れずに。

最後に

これで終わりです。お疲れさまでした。

参考記事

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?