💻SBC 用 Ubuntu Server 24.04 設定メモ

Ubuntu Server 24.04 を aarch64 SBC(Raspberry Pi5, Rock5B) で設定した時の基本設定をメモしておく。

シェルで何か起動するときの行頭、 sudo が必要なものは # ... で表している。不要なら $ ... 。 これは、毎回 sudo と書きたくないから。

環境、ネットワーク関連の設定

  • .bashrc
  • IPV4
  • SSH サーバー
  • ufw

.bashrc

  • .bashrc の中で PS1 ( bash プロンプト設定変数) に以下を仕込む
    • rsz()less などで画面サイズが 80x24 に設定されるのを回避する
    • ondo() … 温度を表示
rsz () if [[ -t 0 ]]; then local escape r c \
  prompt=$(printf '\e7\e[r\e[999;999H\e[6n\e8'); \
  IFS='[;' read -sd R -p "$prompt" escape r c; stty cols $c rows $r; fi
rsz

# temperature in Raspberry Pi5, ROCK 5B
ondo () { temp=`cat /sys/class/thermal/thermal_zone*/temp | \
  awk '{if(max==""){max=$1};if($1>max){max=$1};} END {print max}'`; \
  echo ${temp:0:2}.${temp:2:2}
}

export PS1="\$(rsz)\$(`echo ondo`)C ${PS1}"

IPV4

/etc/netplan/*.yaml を編集する。既定で IPV4 は有効化しないので、設置環境に合わせて以下を編集。

  • 現時点では gw 指定を routes: 配下の書き方で指定する
  • DHCP は試してないがそのうちやろう
network:
    version: 2

    ethernets:
        <<ここに ip a で調べた LAN の名前 eth0 とかを入れる>>:
            #renderer: NetworkManager
            addresses: [aaa.bbb.ccc.ddd/24]
            routes:
              - to: default
                via: aaa.bbb.ccc.eee
                metric: 100
            nameservers:
                addresses: [aaa.bbb.ccc.eee,fff.ggg.hhh.iii]
            dhcp6: false
            dhcp4: false
            optional: true

設定反映

# netplan apply

SSH サーバー

  • 最初に sshd を起動する
  • 設定変更前にローカルから公開鍵を作って転送
  • sshd 設定変更と再起動

最初に sshd を起動する

初期状態の Ubuntu Server は sshd が無効化されているので、まずは起動してやる。

// 有効化
# systemctl enable ssh
// 起動
# systemctl start ssh
// 確認
# systemctl status ssh

設定変更前にローカルから公開鍵を作って転送

ssh-copy-id を使う場合 /etc/ssh/sshd_config:PasswordAuthentication yes にしておかないと、ログイン認証できずコピーされない。

cd ~/.ssh
ssh-keygen -t ed25519 -f rock5b_ed25519
ssh-copy-id -i rock5b_ed25519.pub <user>@<host>

sshd 設定変更と再起動

/etc/ssh/sshd_config (ファイル) に書く。

  • /etc/ssh/sshd_config.d/*.config でオーバーライドされていないか確認しとく。
Port 変えた
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no

設定を検証

$ sshd -t

sshd を再起動して状況確認

# systemctl restart ssh
# systemctl status ssh

ローカル側 ~/.ssh/config

Host rock5b
  HostName       <IPV4アドレス>
  Port           <変更したポート番号>
  User           <ID>
  IdentityFile   ~/.ssh/rock5b_ed25519
  TCPKeepAlive   yes
  IdentitiesOnly yes

ufw

// デーモンうごいてますか
# systemctl status ufw

● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; preset: enabled)
     Active: active (exited) since Thu 2024-08-08 06:01:08 UTC; 3 days ago
       Docs: man:ufw(8)
   Main PID: 578 (code=exited, status=0/SUCCESS)
        CPU: 7ms

Aug 08 06:01:08 ubuntu systemd[1]: Starting ufw.service - Uncomplicated firewall...
Aug 08 06:01:08 ubuntu systemd[1]: Finished ufw.service - Uncomplicated firewall.

// ufw どうですか
# ufw status
Status: inactive

// TCP, UDP も IPV4, IPV6 も分け隔てなくブロック
# ufw deny 22

// ちゃんと 22 番以外でつながる手段とっておいてから有効化
# ufw enable
Firewall is active and enabled on system startup

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
22 (v6)                    DENY        Anywhere (v6)

// ざっくり
// イミフなときは ufw <action> --help すれば?
# ufw {allow,deny} [from <ip/netmask> to <any> port] 22</{tcp,udp}>
*/