この記事では、Ubuntu 24.04 LTS以降でsshポートを変更する方法をまとめます。
背景 #
従来、sshポートを変更するとき、/etc/ssh/sshd_configを編集していました。
# Port 22
Port 22222その後、sshを再起動していました。
sudo systemctl restart ssh一方で、Ubuntu 22.10以降では、OpenSSHでsystemdのsocket activationが使われています。
この方式では、ssh.socketがsshポートを待ち受け、接続要求が来たタイミングでssh.serviceを起動します。
また、Ubuntu 24.04 LTS以降では、sshd_configの内容をもとにssh.socketの設定が生成されます。
そのため、sshポートを変更する場合は、sshd_configを編集したあとにsystemdをreloadし、ssh.socketを再起動する必要があります。
手順 #
sshポートの変更 #
/etc/ssh/sshd_configを編集します。
sudo vim /etc/ssh/sshd_configPortの設定を探して変更します。
# Port 22
Port 22222systemdのreloadとssh.socketの再起動 #
systemdをreloadします。
sshd_configを変更したあとは、更新されたssh.socketの設定をsystemdに再生成・認識させるために、daemon-reloadを実行します。
sudo systemctl daemon-reloadその後、ssh.socketを再起動します。
sudo systemctl restart ssh.socketファイアウォールの設定 #
UFWを有効にしている場合は、新しいsshポートを許可します。
sudo ufw allow 22222/tcp
sudo ufw status接続確認 #
現在のsshセッションはまだ閉じずに、別のターミナルを開き、新しいポートで接続できるか確認します。
ssh -p 22222 [email protected]新しいssh接続ができることを確認したら、必要に応じて古いポートのルールを削除します。
sudo ufw delete allow 22/tcpおわりに #
Ubuntu 24.04 LTS以降ではsshの待ち受けがssh.socketで管理されるため、ポート変更を反映するにはssh.serviceではなくssh.socketの再起動が必要でした。
忘れやすいポイントだったので、備忘録として残しておきます。