UbuntuServer 24.04でSSHサーバの待受ポートを変更する方法です。
ポート番号の変更はsystemctl edit ssh.socket
Ubuntu22.10からSSHサーバーはsystemdのSocket-Based Activationを利用して起動されるになりました。
そのため、ポート番号の変更は「/etc/ssh/sshd_config」で設定することが出来なくなっています。
ポート番号の変更は「ssh.socket」の設定で行う必要が有るので、「systemctl edit ssh.socket」コマンドで設定変更を行います。
$ sudo systemctl edit ssh.socket
編集されたファイルは「/etc/systemd/system/ssh.socket.d/override.conf」 として保存され、ここで設定した内容はssh.socketの設定ファイルである「/usr/lib/systemd/system/ssh.socket」の設定を上書きするものになります。
編集エディタについて
初期の状態では設定ファイルを編集するためのエディタとして「nano」が使用されます。
普段「nano」を使っていなくて、いつものエディタを変更したい場合は下記のコマンドでエディタを変更することが出来ます。
$ sudo update-alternatives --config editor
詳しい情報は下記のページに記述していますので、興味が有る場合は参照してみてください。
設定変更例
SSHサーバの待受ポートを22番から10022番ポートに実際に変更していきます。
今回はポート番号を10022番に変更していますが、他のサービスと被らなければ他の番号でも問題ありません。
$ sudo systemctl edit ssh.socket
設定内容
下記の3行を、編集画面に表示されたメッセージのとおりに「### Anything between here and the comment below will become the contents of the drop-in file」と「### Edits below this comment will be discarded」の間に記述します。
「ListenStream=」という設定は、もともと「/usr/lib/systemd/system/ssh.socket」に設定されている「ListenStream=22」という設定を打ち消すための設定になります。
[Socket] ListenStream= ListenStream=10022
実際の編集例はこんな感じになります。
### Editing /etc/systemd/system/ssh.socket.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file
[Socket]
ListenStream=
ListenStream=10022
### Edits below this comment will be discarded
##### 以下省略 #####
nanoを使った編集方法
初期設定では設定用のエディタとして「nano」が使用されています。
カーソルの移動は矢印キーで行い、文字の削除は「Backspace」や「Delete」キーで行うことが出来ます。
設定が終わったら、「Ctrl」+「x」を押下します。
変更を保存するかどうかのメッセージが画面の下部に表示されるので、「Y」キーを押下します。
Save modified buffer? Y Yes N No ^C Cancel
書き込みするファイル名が表示されるので、そのまま「Enter」キーを押下してファイルに書き込みを行い編集を終了させます。
File Name to Write: /etc/systemd/system/ssh.socket.d/.#override.confdd96ec677194c0a7 ^G Help M-D DOS Format M-A Append M-B Backup File ^C Cancel M-M Mac Format M-P Prepend ^T Browse
画面上に編集が成功したといったメッセージが表示されます。
Successfully installed edited file '/etc/systemd/system/ssh.socket.d/override.conf'.
メッセージの内容
ちなみに、コメントとして記述されているメッセージの訳は以下の通りとなります。
### Anything between here and the comment below will become the contents of the drop-in file
(ここと以下のコメントの間にあるものがドロップインファイルの内容になります)
### Edits below this comment will be discarded
(このコメント以下の編集は破棄されます)
drop-inファイルについて
ドロップインファイルとは、systemdのユニット設定を部分的に変更する場合に使用されるもので、変更したい部分の設定のみを上書きすることができます。
設定反映
ssh.socketとsshを再起動して設定を反映させます。
$ sudo systemctl restart ssh.socket $ sudo systemctl restart ssh
以前はsystemctlでSSHサーバを指定する場合に「sudo systemctl restart sshd」といったように指定していましたが、UbutuServer24.04では「ssh」に変更されていますので注意してください。
使用ポートの確認方法
ssh.socketの確認方法
「systemctl status ssh.socket」を実行して表示される、Listenの部分で使用しているポート番号を確認することが出来ます。
$ sudo systemctl status ssh.socket
● ssh.socket - OpenBSD Secure Shell server socket
Loaded: loaded (/usr/lib/systemd/system/ssh.socket; enabled; preset: enabled)
Drop-In: /etc/systemd/system/ssh.socket.d
└─override.conf
Active: active (running) since Sun 2024-10-06 22:18:24 JST; 7min ago
Triggers: ● ssh.service
Listen: [::]:10022 (Stream)
Tasks: 0 (limit: 1068)
Memory: 8.0K (peak: 256.0K)
CPU: 322us
CGroup: /system.slice/ssh.socket
Oct 06 22:18:24 133-130-96-87 systemd[1]: Listening on ssh.socket - OpenBSD Secure Shell server
sshの確認方法
「lsof -i」コマンドを使用すると、現在使用(LISTEN)されているポートを調べることが出来ます。
$ sudo lsof -i | grep ssh sshd 1300 root 3u IPv6 7351 0t0 TCP *:10022 (LISTEN)
sshを再起動した直後であれば、「systemctl status ssh」で表示されるログからも使用(LISTEN)されているポートを確認することが出来ます。
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
Active: active (running) since Sun 2024-10-06 21:30:37 JST; 2s ago
TriggeredBy: ● ssh.socket
Docs: man:sshd(8)
man:sshd_config(5)
Process: 1390 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 1392 (sshd)
Tasks: 1 (limit: 1068)
Memory: 1.2M (peak: 1.4M)
CPU: 29ms
CGroup: /system.slice/ssh.service
└─1392 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
Oct 06 21:30:37 xxx-xxx-xxx-xxx systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
Oct 06 21:30:37 xxx-xxx-xxx-xxx sshd[1392]: Server listening on :: port 10022.
Oct 06 21:30:37 xxx-xxx-xxx-xxx systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
下記のコマンドでもsystemdのログを確認することが出来きます。
$ sudo journalctl -u ssh
sshを再起動させた時刻あたりを確認すると、以下のようなログが記録されています。
Oct 06 21:30:37 xxx-xxx-xxx-xxx sshd[1392]: Server listening on :: port 10022.
コメント