CentOS 8 で ssh ポートを変更

Cent OS 8 は firewall-cmd , SeLinux など高度なセキュリティを持っているのですが、よくあるブログの解説では 停止させる。とかして問題を回避しています。
もちろんこれらの動作を止めることなく活用して ssh ポートを変更していきます。

まずはssh サーバーの設定ファイル /etc/ssh/sshd_config を編集します。

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port xxxx <--- ここに好みのポート番号を記述
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

もしこの状態で “sudo systemctl restart sshd.service” を実行すれば

● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
 enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sat 2019-12-07 20
:37:23 EST; 33s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 3016 ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY (code=exited
, status=255)
 Main PID: 3016 (code=exited, status=255)

Dec 07 20:37:23 red systemd[1]: sshd.service: Failed with result 'exit-code'.
Dec 07 20:37:23 red systemd[1]: Failed to start OpenSSH server daemon.

こんな感じのエラーがでます。

ここで2つのことを実行します。

  1. ssh service の再定義
  2. selinuxを設定

Step1: /usr/lib/firewalld/services/ssh.xml を編集します。

<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="xxx"/>  <--- xxx を好みのポート番号に変更
</service>

Step 2: 以下のコマンドを実行

# semanage port -a -t ssh_port_t -p tcp xxxx  <--- xxx を好みのポート番号に変更

設定を確認して再起動すれば完了!!