🔖

UbuntuでSSH用ポートを設定

2024/12/17に公開

概要

UbuntuでSSH用のポートを複数設定しようとした際、従来の /etc/ssh/sshd_config による設定では変更できませんでした。調べたところ、新しい設定方法が導入されており、今回その手順を備忘録としてまとめます。

参考にさせていただいた記事

今回行ったこと

SSH接続用のポートを2222に指定

結論

/lib/systemd/system/ssh.socket の ListenStream を編集する

環境

  • Ubuntu Server 24.04.1 LTS (64-bit)

/lib/systemd/system/ssh.socket の編集

/lib/systemd/system/ssh.socket
[Socket]
- ListenStream=22
+ ListenStream=2222

複数ポート(例: 2222と22222)を有効にする場合

/lib/systemd/system/ssh.socket
[Socket]
- ListenStream=22
+ ListenStream=2222
+ ListenStream=22222

編集後は以下のコマンドを実行

$ sudo systemctl daemon-reload
$ sudo systemctl restart ssh.socket
$ sudo ss -tlnp | grep ssh # 設定反映の確認
LISTEN 0      4096               *:2222             *:*    users:(("sshd",pid=29940,fd=4),("systemd",pid=1,fd=78))
LISTEN 0      4096               *:22222            *:*    users:(("sshd",pid=29940,fd=3),("systemd",pid=1,fd=72))

おまけ(鍵認証のみを有効化する場合)

/etc/ssh/sshd_config の設定だけでは反映されなかった。

/etc/ssh/sshd_config
PasswordAuthentication no
$ sudo sshd -T | grep passwordauthentication
passwordauthentication no

/etc/ssh/sshd_config をよく読むと以下の行を発見。

/etc/ssh/sshd_config
Include /etc/ssh/sshd_config.d/*.conf

/etc/ssh/sshd_config.d/ を見てみると、設定ファイルがあった。

$ ls /etc/ssh/sshd_config.d/
50-cloud-init.conf
$ cat /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication yes

これが優先されていたみたい。50-cloud-init.conf をコメントアウトして、再起動すると設定が反映された。Include行をコメントアウトでも大丈夫なはず。

$ sudo systemctl restart ssh
$ sudo sshd -T | grep passwordauthentication
passwordauthentication no

Discussion