0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspi5 + Ubuntu server 24.04.1 LTS 初期設定

Posted at

Raspberry Piには専用のRaspberry Pi OSが用意されていますが、自分は普段はSSH接続でRaspiを操作していること(モニターのHDMIを繋ぎかえるのが面倒なため)、AWSやGCPを触る際はRaspberry Pi OSは使えないことなどから、Raspi4ではUbuntu server22.04 LTSを使用していました。

Raspi5も、Ubuntu serverで使用できるようにセットアップしたので、備忘録です。

クライアントにはMacを使用しています。

MacでのCLI操作には接頭に%を、Raspi(Ubuntu)でのCLI操作には$をつけています。

1. Ubuntu server 24.04.1 LTSをSSDにインストール

最新のUbuntu serverは24.04.1 LTSでしたので、これを使用することにします。

ssdとMacを外付けストレージを使用して接続し、Raspberry Pi OS Imagerを使用して、ssdにubuntu server24.04.01LTSを書き込みます。

2. Raspi5をモニター、キーボードに繋げて起動

ssdを載せたM2 hatとRaspi5本体と接続し、電源ケーブルを差し込んで起動します。

この時点ではwifiにも繋がっていません。

しばらく待つと、モニターにUbuntu server のログイン画面が表示されます。デフォルトユーザーはubuntu (password: ubuntu)です。

まずはubuntuと入力します。

ubuntu login:ubuntu

次に初期パスワードであるubuntuを入力します。

Password:

You are required to change your password immediately(パスワードをすぐに変更してください)と出るので画面にしたがって新しいパスワードを作成します。

「現在のパスワードは?」と聞かれるので、初期パスワードubuntuを入力します。

Current password:

新しいパスワードを入力します。2回入力を求められます。

New password:

3. 新しいユーザーを追加

初期ユーザーのubuntuは誰もが知っていてログインできてしまうので、ユーザーを追加します。

$ adduser hoge_user_name
Adding user `hoge_user_name' ...
Adding new group `hoge_user_name' (1006) ...
Adding new user `hoge_user_name' (1003) with group `hoge_user_name' ...
Creating home directory `/home/hoge_user_name' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for hoge_user_name
Enter the new value, or press ENTER for the default
	Full Name []:
	Room Number []:
	Work Phone []:
	Home Phone []:
	Other []:
Is the information correct? [Y/n]

パスワードを2回入力します。Full name 以下は空欄で大丈夫です。

次に、新しく追加したhoge_user_nameに、sudo権限を追加します。

$ sudo gpasswd -a hoge_user_name sudo
Adding user hoge_user_name to group sudo

現在のユーザーubuntuから、作成したhoge_user_nameに切り替えます。

$ su hoge_user_name

次に、デフォルトユーザーのubuntuを削除します。

$ sudo userdel -r ubuntu

4. ネットワーク設定

まずは、wifiに接続します。そのために、以下のコマンドを実行します。

$ip link show 

ip link show の出力のうち、wlan0がwifiなので、wlan0に接続するように、設定を変更します。

$ sudo vim /etc/netplan/50-cloud-init.yaml

50-cloud-init.yamlを、以下のように変更します。

network:
    version: 2
    wifis:
        renderer: networkd
        wlan0:
            access-points:
              YOUR_SSID:
                password: "YOUR_PASSWORD"
            dhcp4: true
            optional: true

変更したnetplanを適用します。

$ sudo netplan apply

これで適用されなければ、rebootしましょう。

いよいよ、SSH接続の設定のための下準備に進みます。まず、ネットワーク関連のパッケージのnet-tools, inetutils-pingをインストールします。

$ sudo apt install net-tools inetutils-ping

デフォルトゲートウェイと、DNSアドレス・サブネットマスクをチェックします。

$ ip route

自分の環境だと、
デフォルトゲートウェイ・DNSアドレス: 192.168.11.1
サブネットマスク: /24
になります。
次に、Raspi5のIPアドレスを固定します。固定していないと、再起動するたびにIPアドレスが動的に割り振られてしまい、クライアント側からIPアドレスを探さないとSSH接続できなくなってしまうためです。以下のコマンドで、現在のIPアドレスを確認します。

$ hostname -I
192.168.11.14

現在のIPアドレスは192.168.11.14です。192.168.11の部分は固定なので、192.168.11.2〜192.168.11.255の中からIPアドレスを選びます。なんとなく、192.168.11.15にしてみます。
このIPアドレスが、既に他の機器で使われていないかを確認します。

% ping 192.168.11.15

使われていなければ、Destination Host Unreachableが出力されます。これでIPアドレスは192.168.11.15に決定しました。
設定に反映させましょう。デフォルトのnetplanの設定ファイルは50-cloud-init.yamlですが、これを上書きするファイルを作ります。

$ sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/60-cloud-init.yaml

/etc/netplanに複数のyamlファイルを配置すると、ファイル名がアルファベット順に読み込まれ、設定項目が重複する場合、後に読み込んだファイルの設定値で上書きされていきます。つまり、設定値の優先順位としては以下のようになります。
99****.yaml > 50****.yaml > 01****.yaml
これにより、デフォルトの50-cloud-init.yamlよりも優先度の高い60-cloud-init.yamlを作り出しています。このファイルを編集しましょう。

$ sudo vim /etc/netplan/60-cloud-init.yaml

以下のように書き換えます。

network:
  version: 2
  renderer: networkd
  wlan0:
    dhcp4: false
    dhcp6: false
    addresses: [192.168.11.15/24]
    routes:
      - to: default
        via: 192.168.11.1
    nameservers:
      addresses: [192.168.11.1]

rebootして、IPアドレスが192.168.11.15に固定されていることを確認しましょう。

5. SSH接続

デフォルトでは、password認証でのSSH接続はdenyされます。password認証でのSSH接続はセキュリティ的に望ましくないので、公開鍵認証を設定するべきですが、クライアント側で作成した鍵をRaspi側に送信するために、一時的にpassword認証でのSSH接続を許可することにします。

$ cd ~/.ssh/

このフォルダの中の、ssh_config, sshd_config, ssh_config.d, ssh_config.dの全てを確認し、全てのpasswordAuthentificationを一旦yes にします。これによってpassword認証でのSSH接続が可能になります。すぐに公開鍵認証を設定しましょう。

クライアントで鍵の生成を行います。-tオプションで暗号化のアルゴリズムを指定でき、今回はed25519を指定しています。Ubuntu22以降では、RSAはデフォルトで無効化されています。-fオプションで鍵に名前をつけられます。

% ssh-keygen -t ed25519 -f ~/.ssh/id_ubuntu2404

クライアント側で作成した鍵を、Raspiにコピーします。

% ssh-copy-id -i ~/.ssh/id_ubuntu2404.pub hoge_user_name@192.168.11.15

このときに、password入力を求められます。

コピーできたら、クライアント側の設定を変更しておきましょう。

% sudo vim ~/.ssh/config
Host ubuntuRaspi5
  HostName 192.168.11.15
  User hoge_user_name
  IdentityFile ~/.ssh/id_ubuntu2404

これにより、下のように簡単にログインできるようになります。

% sudo ubuntuRaspi5

これでクライアントからRaspi側に公開鍵認証を用いてSSH接続できます。
接続できることを確認したら、Ubuntu server側の、ssh_config, sshd_config, ssh_config.d, ssh_config.dの全てを確認し、全てのpasswordAuthentificationnoにしましょう。

6. セキュリティ設定

前項でpasswordAuthentificationを禁止しました。他にやるべき設定を挙げてみます。

  1. RootLoginの禁止
  2. ファイアウォールの有効化、ポートの変更

あたりでしょうか。

1. RootLogin の禁止

$ sudo vim ~/.ssh/sshd_config

を実行し、PermitRootLoginno に変更します。

2. ファイアウォールの有効化

$ sudo ufw enable

これでファイアウォールが有効化されます。SSH接続がここで切られる可能性があるので、切られたら再度Raspiをモニターに繋いで下さい。

$ sudo ufw allow 4444

これでポート4444番が有効化されます。ポート番号は1023番以下はすでに使われていることがある(ウェルノウンポート) ので、1024以上が良いでしょう。
ポートを無効化するには、

$ sudo ufw deny 22

のようにします。22番ポートはSSH接続で一般的に使われるので狙われやすく、閉じておいた方がいいでしょう。ここまで設定できれば、Raspi側を再度rebootします。

クライアント側で、ssh_configにポートの設定を追記しましょう。

% sudo vim ~/.ssh/config
Host ubuntuRaspi5
  HostName 192.168.11.15
  Port 4444
  User hoge_user_name
  IdentityFile ~/.ssh/id_ubuntu2404
% sudo ubuntuRaspi5

でSSH接続できれば完了です。

これで、長かった設定も終了です。最後までお付き合いいただきありがとうございます。お疲れ様でした。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?