ラズベリーパイの初期設定(アカウント設定~リモート接続まで)
今回はラズパイ(Raspberry pi)の初期設定を行いました。
作業ログとして記載します。
- 1. 端末情報
- 2. 事前準備
- 3. ① ルート(root)のパスワード変更
- 4. ② アカウントの追加
- 5. ③ ②で作成したユーザに、piユーザのグループを複製
- 6. ④ ユーザ「pi」のhomeを、新規作成したユーザのhomeにコピー
- 7. ⑤ オートログインのOFF
- 8. ⑥ piユーザのロック
- 9. ⑦ SSIDの設定
- 10. ⑧ vimのインストール
- 11. ⑨ SSHの設定
- 12. ⑩ ホスト名の設定
- 13. ⑪ 固定IP化
- 14. ⑫ ufw(ファイアーウォール)のインストール
- 15. ⑬ (クライアント側端末に)Teratermのインストール
- 16. ⑭ (クライアント側にて)sshのkeyを生成する
- 17. ⑮ (クライアント側から)scpを利用してサーバに公開鍵を送信する
- 18. ⑯ /home/new_user/.ssh にauthorized_keysを作成し、公開鍵を追記する。
- 19. ⑰ sshの設定を変更する。
- 20. ⑱ Teratermで秘密鍵を用いて接続検証する。
- 21. まとめ
端末情報
サーバの筐体: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)ユーザ、パスを入力。秘密鍵を指定して「接続」する。
まとめ
ネット上に公開いただいている沢山の知見をもとに、なんとか設定が完了しました。
ありがとうございました。
-
前の記事
ラズパイラックを組み立ててみた!電源供給編 2021.09.13
-
次の記事
Raspberry pi ImagerでNetwork Errorが発生した場合はスタンドアロンモードで対処する 2021.09.15