外部ネットワークネットからsshでサーバーにアクセスできなくなった

さくらVPN(CENTOS7)を使っていて急に外部ネットワークネットからsshでサーバーにアクセスできなくなったときの対処メモ。

1. suコマンドでrootになって/var/log/messagesの中身を確認したところ、前日に行ったyum updateした後から、dockerがiptablesやfirewalldがらみでfailedをはいているのを確認。

#yum update

2. ネットで調べてファイヤーウォールに問題があるとにらみ、firewalldサービスの状態確認。

#systemctl status firewalld.service

Active: active (running)になっているが、WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables ….. docker0 ……
というWARNINGが表示される。

3. 試しにfirewalldサービスをストップしてみる。すると、外部からのssh接続成功。

#systemctl stop firewalld.service

4. firewalldサービスを起動し有効な設定を確認。sshは有効になっている。

#firewall-cmd --list-services --zone=public  --permanent
hcpv6-client ssh http

5. iptablesが悪いのかと状態を確認すると入っていない。firewalldがやはりおかしい。

#systemctl status iptables.service
Unit iptables.service could not be found.

6. 念のため、sshを許可しreloadで設定を反映させてもssh接続できない。

#firewall-cmd --add-service=ssh --permanent
#firewall-cmd --reload

7. firewalldのsshの設定を確認したらPortがデフォルトの「22」になっていた。/etc/ssh/sshd_configに設定しているPort番号と違っている!
念のため、デフォルトのssh.xmlをコピーしてから/etc/ssh/sshd_configの設定に合わせてPort番号を変更。
すると無事にssh接続成功!

#cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
#vi /etc/firewalld/services/ssh.xml

 <port protocol="tcp" port="22"/> #ここを変更

#firewall-cmd --reload