🔖
UbuntuでSSH用ポートを設定
概要
UbuntuでSSH用のポートを複数設定しようとした際、従来の /etc/ssh/sshd_config による設定では変更できませんでした。調べたところ、新しい設定方法が導入されており、今回その手順を備忘録としてまとめます。
参考にさせていただいた記事
- 11ppmさん
https://qiita.com/11ppm/items/a17e585e05cc3903f5c9 - ゆに茶さん
https://www.uni-sonia.com/archives/1477
今回行ったこと
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