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つのことを実行します。
- ssh service の再定義
- 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 を好みのポート番号に変更
設定を確認して再起動すれば完了!!