ラズベリーパイの初期設定(アカウント設定~リモート接続まで)

ラズベリーパイの初期設定(アカウント設定~リモート接続まで)

今回はラズパイ(Raspberry pi)の初期設定を行いました。

作業ログとして記載します。

端末情報

サーバの筐体:Raspberry pi 4

OS情報:「lsb_release -a」を実行

Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster

クライアントOS:WIndows 10

事前準備

(1)Raspberry pi 4 にマイクロHDケーブルを挿し、ディスプレイと接続

(2)Raspberry pi 4 にマウスとキーボードを接続

(3)電源を入れる

(4)OSの初期設定を行う

  ※ 画面を回転させる必要がある場合は以下の様に実行

    sudo vi /boot/config.txt

    ————————————————————

    display_rotate=1

    パラメータ: 0 = 0°、1=90°、2=180°、3=270°

    ————————————————————

    → パラメータ設定後、ラズパイを再起動が必要

(5)OSの初期設定が完了したら、一度再起動を行う。

  → 言語を「Japanese」にした場合、言語を反映させるため。

(6)再起動後「LXTerminal」を起動する。

  → LXTerminal起動のショートカット: Ctr + Alt + T

① ルート(root)のパスワード変更

目的:デフォルトでは設定されていないため。

(1)rootに切り替え:sudo su –

(2)rootのパスワード設定:passwd root

② アカウントの追加

目的:デフォルトで入っている「ユーザ:pi」は使用しない。ID、PWが知られているため。

参考:https://eng-entrance.com/linux-user-add

(1)rootに切り替え:sudo su –

(2)ユーザの追加: useradd -m new_user

 ※ -mオプションを付けない場合は、home配下にユーザフォルダが作成されなくなる。

(3)新規作成したユーザのパスワード設定:passwd new_user

③ ②で作成したユーザに、piユーザのグループを複製

目的:②と同様

参考:https://monoist.atmarkit.co.jp/mn/articles/1912/11/news022_2.html

(1)piに付与されているグループを確認:groups pi

(2)(1)で取得したグループ情報を元に、usermodコマンドを利用して「new_user」を同様のグループに所属させる。

sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio new_user

④ ユーザ「pi」のhomeを、新規作成したユーザのhomeにコピー

参考:https://monoist.atmarkit.co.jp/mn/articles/1912/11/news022_2.html

(1)コピーを実行する:sudo cp -r /home/pi/* /home/new_user

⑤ オートログインのOFF

目的:電源ON時にユーザを選択したいため。

参考1:https://monoist.atmarkit.co.jp/mn/articles/1912/11/news022_2.html

参考2:https://qiita.com/t0yohei/items/f5355f8c456d9cf64679

(1)オートログインの設定を編集する:

viの操作 参考:http://psa2.kuciv.kyoto-u.ac.jp/staff/susaki/command/vi.html

   → x:1文字削除

   sudo vi /etc/lightdm/lightdm.conf

(2)126行目の先をコメントアウトする: autologin-user=pi

(3)オートログインサービスの設定を編集する:

   sudo vi /etc/systemd/system/autologin@.service

(4)28行目の「–autologin pi」を「–autologin new_user」へ変更する。

(5) whoコマンドを実行し、tty1を確認

  → 「pi」となっていたため、以下のサイトを参考に設定変更を行った。

  → 参考:https://gist.github.com/yoggy/de9a4a6405834f52accc
  → sudo vi /etc/systemd/system/getty@tty1.service.d/autologin.conf
  → 以下の内容のうち、「pi」を「new_user」に変更

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty –autologin pi –noclear %I 38400 linux

⑥ piユーザのロック

目的:②と同様

参考:https://atmarkit.itmedia.co.jp/ait/articles/1612/05/news021.html

(1)ロックを行う:sudo passwd -l pi

(2)ロックされたかを確認する:sudo passwd -S pi

   → pi L 05/07/2021 0 99999 7 -1

   → Lがロック

(3)一度rebootをして、上記までの設定が反映されているかを確認する。

   → sudo reboot

⑦ SSIDの設定

目的:自宅の無線LANを利用するため

(1)ラズパイの「wifi」マークをクリックし設定

 → コマンドラインだと少々面倒なのでGUIから設定した。

⑧ vimのインストール

目的:個人的に「vi」が使いにくいため(不要な人は実行しなくてよい)

(1)インストールを実施:sudo apt-get install vim

⑨ SSHの設定

参考:https://qiita.com/KOJI-YAMAMOTO/items/d0c0faea710c3c56c669

目的:SSHでのリモート接続を行うため

・ネットワーク上のホストを遠隔操作するためのプロトコル

・PW情報を含めてすべて暗号化されるので、安全性が確保されている。

 → 従来はtelnetプロトコルを利用していたが、暗号化されないため問題だった。

・SSHには2種類の認証方式がある。

 ①パスワード認証方式(パスワードが漏洩するとリスクとなる。)

 ②公開鍵認証方式(公開鍵と秘密鍵を使ってやり取りする)

参考:https://it-trend.jp/encryption/article/64-0057

(1)sshをインストールする:sudo apt-get install ssh

(2)sshの設定を変更する(#でコメントアウトになっているものは、#を消す):

   vim /etc/ssh/sshd_config

   13行目:Port 22

   32行目:PermitRootLogin no

   56行目:PasswordAuthoentication yes

   57行目:PermitEmptyPasswords no

   84行目:UsePAM yes

※このうち、PasswordAuthentication および UsePAMは後の工程でnoに変更する。(scpを一時的に利用するため。)

(3)sshの自動起動を設定する:systemctl enable ssh

(4)自動起動を検証するため、一度再起動する:reboot

(5)sshのステータスをチェックする:sudo systemctl status ssh

※sshをリスタート:sudo systemctl restart ssh

⑩ ホスト名の設定

参考1:https://rs-techdev.com/archives/20

参考2:https://qiita.com/naoyukisugi/items/66fd21512da75b437465

(1)/etc/hostname を編集する:vim /etc/hostname

(2)/etc/hosts を編集する:vim /etc/hosts

※両方のファイルの「raspberrypi」を任意のホスト名に変更する。

※/etc/hostnameのみの変更だと、rebootした後にホスト名が戻ってしまうため、必ず2つとも変更する。

(3)ホスト名が変更されるか確認するため、一度再起動する:reboot

⑪ 固定IP化

参考:https://qiita.com/NariseT/items/e861138097ede83cc19c

(1)別途自宅の無線LANに繋がっているPC(私の場合はWindows)のコマンドプロンプトにて「arp -a」を実行

 → ルータに問い合わせし、現時点でのarpテーブルを取得

 → 利用されていないIPを選定する。

(2)dhcpcd.confを編集する:sudo vim /etc/dhcpcd.conf

(3)以下の内容を追記する:

   interface wlan0

   static ip_address=192.xx.xx.xx

   static routers=192.xx.xx.xx

   static domain_name_servers=192.xx.xx.xx

(4)dhcpcdデーモンを再起動する:sudo service dhcpcd reload

(5)(1)で使用した端末から、ラズパイに対してping、nslookupを実行し、導通確認を行う。

⑫ ufw(ファイアーウォール)のインストール

参考:https://sukiburo.jp/raspberry-pi-firewall/

(1)インストール: sudo apt-get install ufw

⑬ (クライアント側端末に)Teratermのインストール

(1)インストーラをダウンロードして、端末にインストールする

サイト:https://ja.osdn.net/projects/ttssh2/

⑭ (クライアント側にて)sshのkeyを生成する

目的:ssh通信を行うため、公開鍵と秘密鍵を生成する。

参考:

(1)(私の場合はWindows)コマンドプロンプトにて「ssh-keygen」を実行

   → 事前に「Git」をインストールしている。

(2)ユーザフォルダの「.sshフォルダ」配下にkeyが生成される。

   → 公開鍵:rsa.pub

   → 秘密鍵:rsa

⑮ (クライアント側から)scpを利用してサーバに公開鍵を送信する

目的:ssh通信を行うため、公開鍵をサーバにアップロードする。

(1)(ラズパイ側にて)sshでログインするユーザの「home」に移動し、「.sshフォルダ」を作成する

   → mkdir .ssh

(2)(Teratermにて)対象のラズパイに接続後、メニュー>SSH_SCPを起動する。

(3)Fromにクライアント側の「id_rsa.pub」を指定。

(4)Toにラズパイ側の「.ssh」を指定。

※(ラズパイ側にて)scpの送付先「.ssh」の権限が「700」であることを確認しておく。

 → 参考:https://note.mokuzine.net/ssh-permission-denied/

 → 権限確認: ls -la

 → 権限変更: chmod 700 .ssh

⑯ /home/new_user/.ssh にauthorized_keysを作成し、公開鍵を追記する。

目的:クライアント側の公開鍵を追加するため。

参考:https://mironal-memo.blogspot.com/2012/07/ssh.html

(1)scpで送付されたファイルを、authorized_keysに追記する。

cat id_rsa.pub >> ~/.ssh/authorized_keys

(2)追記し終えた「id_rsa.pub」は不要なので削除しておく:rm id_rsa.pub

※(ラズパイ側にて)authorized_keysの権限が「600」、オーナが「接続するユーザ」であることを確認しておく。

 → 権限周りの参考:https://qiita.com/mountcedar/items/43157ff1225c56500655

 → chownの参考:https://webkaru.net/linux/chown-command/

 → 権限変更: chmod 600 authorized_keys

 → 所有権の変更: chown new_user:new_user authorized_keys

⑰ sshの設定を変更する。

(1)sshの設定を変更する(#でコメントアウトになっているものは、#を消す):

   vim /etc/ssh/sshd_config

    13行目: Port 22

    32行目: PermitRootLogin no

    56行目: PasswordAuthoentication no

    57行目: PermitEmptyPasswords no

    84行目: UsePAM no

(2)sshをリスタートする:sudo systemctl restart ssh

⑱ Teratermで秘密鍵を用いて接続検証する。

(1)IPを入力する

(2)ユーザ、パスを入力。秘密鍵を指定して「接続」する。

まとめ

ネット上に公開いただいている沢山の知見をもとに、なんとか設定が完了しました。

ありがとうございました。