メインコンテンツへスキップ

Ubuntu 24.04 LTS以降でsshポートを変更する

··1 分·
Makoto Morinaga
著者
Makoto Morinaga
技術メモ、コーディング、環境構築のための個人ノート。
目次

この記事では、Ubuntu 24.04 LTS以降でsshポートを変更する方法をまとめます。

背景
#

従来、sshポートを変更するとき、/etc/ssh/sshd_configを編集していました。

conf
# Port 22
Port 22222

その後、sshを再起動していました。

shell
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を編集します。

shell
sudo vim /etc/ssh/sshd_config

Portの設定を探して変更します。

conf
# Port 22
Port 22222

systemdのreloadとssh.socketの再起動
#

systemdをreloadします。

sshd_configを変更したあとは、更新されたssh.socketの設定をsystemdに再生成・認識させるために、daemon-reloadを実行します。

shell
sudo systemctl daemon-reload

その後、ssh.socketを再起動します。

shell
sudo systemctl restart ssh.socket

ファイアウォールの設定
#

UFWを有効にしている場合は、新しいsshポートを許可します。

shell
sudo ufw allow 22222/tcp
sudo ufw status

接続確認
#

現在のsshセッションはまだ閉じずに、別のターミナルを開き、新しいポートで接続できるか確認します。

shell
ssh -p 22222 [email protected]

新しいssh接続ができることを確認したら、必要に応じて古いポートのルールを削除します。

shell
sudo ufw delete allow 22/tcp

おわりに
#

Ubuntu 24.04 LTS以降ではsshの待ち受けがssh.socketで管理されるため、ポート変更を反映するにはssh.serviceではなくssh.socketの再起動が必要でした。

忘れやすいポイントだったので、備忘録として残しておきます。

関連記事