手順
ssh.serviceではなく、ssh.socketを再起動する。
なんで?
えー、自分も正確なところはあまりわかってないが、だいたいこんな感じらしい・・・
Ubuntu 24.04ではSocket Activationが有効になっている。これはsystemdがポートを開き、接続があったら対象のサービスを起動して、そのサービスに接続を引き渡す仕組みらしい。
Socket Activationではsystemdが接続を待ち受けるためsshdは自分でポートを開かない。そしてsystemdが待ち受けるポートと引き渡し先のサービスを管理するのがsocketというユニット。sshの場合はssh.socketが管理しているのでポートを変える場合はssh.socketの再起動が必要になる。
ssh.socketは最初にsshd_configを読み取ってポート番号を調べ、/etc/systemd/generator/ssh.socket.d/addresses.conf
というファイルを作成し、systemdに開くポートを伝える。
ちなみにSSHのポートを変えても別にセキュリティ強度が上がるわけではない。攻撃の頻度が減ってログも減る程度の意味しかないが、まあ、自宅サーバ勢には要らんログが減るだけでも嬉しい。とはいえ最近の攻撃ツールにはポートの変更を検出して攻撃先ポートを自動的に変えるものがあるので気休めかもしれないが。