【UbuntuServer24.04】SSHサーバのポートを変更する方法

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

詳しい情報は下記のページに記述していますので、興味が有る場合は参照してみてください。

【Ubuntu】「systemctl edit」や「visudo」で使用されるエディタの変更方法
Ubuntuの「systemctl edit」や「visudo」等で使用される標準のエディタを変更する方法です。 標準エディタの変更方法 「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.

コメント

タイトルとURLをコピーしました