目次
LinuxサーバーへSSH接続する際に使用するポート番号を変更する方法をメモします。
環境 : CentOS7
一般的にSSH通信・接続の際、サーバーが待ち受けるポート番号はデフォルトで22番ということは広く知られており、(ウェルノウンポートという)
デフォルトから変更しておくことで不正ログインの防止など、セキュリティの面でより安全となります。
SSH接続のポート番号を変更する
/etc/ssh/sshd_configを編集する
サーバーへログインし、
設定ファイル /etc/ssh/sshd_config を管理者権限で編集します。
$ sudo vi /etc/ssh/sshd_config
(vi インサートモードで編集)
Port の項目を探す
(変更前) #Port 22
(※変更後) Port 10022
※今回は例としてデフォルトの22から10022に変更しています。
変更する数字は1024以降でかつ他のポートと被らないものが使用可能です。
変更を行ったら、下記のコマンドでsshdサービスを再起動することでSSHポートの変更が反映されます。
$ sudo systemctl restart sshd.service
(注意)
※ファイヤーウォール(firewall)機能をサーバー上で有効にしている場合は、
この時点では接続を切らず次項の設定を行います。
ファイヤーウォールを有効にしている場合の許可設定
セキュリティ機能のファイヤーウォール(firewall)を有効にしている場合は、
・SSHサービスの設定を変更
・変更後のポート番号のアクセス許可
のどちらか(もしくは両方)の設定を行います。
ファイヤーウォールの状態確認
$ sudo firewall-cmd --state
(runningで起動中)
ファイヤーウォールの起動(停止)
$ sudo systemctl start(stop) firewalld
SSHサービスの設定ファイルを変更する
元々存在するテンプレート /usr/lib/firewalld/services/ssh.xml のコピーを作成
$ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
設定ファイルのコピーが完了したら設定の変更を行う
$ sudo vi /etc/firewalld/services/ssh.xml
(vi インサートモードで編集)
$ sudo vi /etc/firewalld/services/ssh.xml <?xml version="1.0" encoding="utf-8"?> <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="22"/> </service>
上記の設定から port=”22″ となっている箇所を探して
port=”10022″
と新しいポート番号へ変更しファイルを保存する。
(保存が完了したら)
1.SSHサービスのアクセス許可を確認する
$ sudo firewall-cmd --list-services --zone=public --permanent
(※上記でもしSSHが無ければアクセス許可に加える)
$ sudo firewall-cmd --add-service=ssh --zone=public --permanent
2.ファイヤーウォールを再読み込みし、設定を反映する
$ sudo firewall-cmd --reload
サーバーへの接続を切り、新しく設定したポート番号(10022)でSSH接続を行う。
(-pオプションでポート番号を指定する)
$ ssh -p 10022 ホスト名(IPアドレス)
接続が行えれば設定完了
下記のようにデフォルト(22番ポート)で接続出来なくなっていればより確実です。
$ ssh XXX.XXX.XXX.XX ssh: connect to host XXX.XXX.XXX.XX port 22: Connection refused
ポート (ports)のアクセス許可を行う場合
1.変更したポート番号(10022)をアクセス許可ポートに追加
$ sudo firewall-cmd --add-port=10022/tcp --zone=public --permanent
2.ポートの追加を確認
$ sudo firewall-cmd --list-ports --zone=public --permanent
(10022/tcp とあれば追加OK)
3.ファイヤーウォールを再読み込みし、設定を反映する
$ sudo firewall-cmd --reload
サービス(services)へのアクセス許可と同様、
接続を一度切り新しく設定したポート番号で接続確認を行います。
$ ssh -p 10022 ホスト名(IPアドレス)
(注意)
もしポート番号を変更後、上記のファイヤーウォールの設定を行わないことが原因で、
再度クライアントからリモート接続出来なくなってしまった場合は
サーバーのコントロールパネルから直接ログインして
firewallを無効にする、もしくはそのままアクセス許可設定を行い直します。
参考
http://asuki-yt.hatenablog.jp/entry/ce7_firewalld
https://qiita.com/kenjjiijjii/items/1057af2dddc34022b09e