2022年10月21日(日本時間)、Ubuntu 22.10 Kinetic Kuduがリリースされました。
主な変更点についてはリリースノートを参照して頂きたいのですが、一般的なユーザーにとって影響するであろうポイントは、SSHサーバーがsystemdのSocket-Based Activation経由で起動されるようになった点でしょう。
この変更は、SSHサーバーの待ち受けポートを変更したい場合に影響があります。従来であれば/etc/ssh/sshd_configを直接書き換えていましたが、Ubuntu 22.10ではsystemd.socketのUnitファイルを変更する必要があります。デフォルトでは/etc/systemd/system/sockets.target.wants/ssh.socket
というファイルに、以下の記述がされています。このListenStream
がポートの指定ですね。
[Unit] Description=OpenBSD Secure Shell server socket Before=sockets.target ConditionPathExists=!/etc/ssh/sshd_not_to_be_run [Socket] ListenStream=22 Accept=no [Install] WantedBy=sockets.target
実は/etc/systemd/system/sockets.target.wants/ssh.socket
は/lib/systemd/system/ssh.socket
へのシンボリックリンクです。このファイルはopenssh-serverパッケージが提供しているファイルのため、直接書き換えるのはよろしくありません。そこでOverrideを作成します。以下のコマンドを実行してください。
$ sudo systemctl edit ssh.socket
すると/etc/systemd/system/ssh.socket.d/override.conf
というファイルが作成され、テキストエディタが開きます。ここに上書きしたいパラメータを適宜追加してください。今回はSSHの待ち受けポートを変更したいので、以下のようにListenStreamを書き換えるとよいでしょう。例えばデフォルトの22番のかわりに2222番で待ち受けたい場合は、以下のようにします。
[Socket] ListenStream= ListenStream=2222
ポイントはListenStream=
という空の行です。systemdのUnitファイルでは、リストとして解釈される設定(よくあるのがService UnitのExecStartとか)は、後から設定したパラメータが追加されていくため、空の行を挟むことで既存のエントリを削除しているのです。もしもこの行を省略すると、22番と2222番の両方で待ち受けるようになってしまいます。
ファイルを保存したら、ssh.socketを再起動してください。
$ sudo systemctl restart ssh.socket
これでSSHサーバーの待ち受けポートを変更できました。