セキュリティ上の理由から、CentOS/RHEL で ssh と sftp 用に別のポートが必要になる場合があります。ここでは、ポート 2222 で SSH を構成し、ポート 22 で動作するように SFTP を構成する方法について簡単に説明します。
1. openssh-5.3p1-117.el6.x86_64 以降 CentOS/RHEL システムで ssh ポートと sftp ポートを分離するには、/etc/ssh/sshd_config を変更します。 ファイルに次の変更を加えます。
# vi /etc/ssh/sshd_config Port 22 Port 2222
2. デフォルト サブシステムをコメントし、以下のサブシステムを追加します。
# vi /etc/ssh/sshd_config Subsystem sftp internal-sftp
ファイル /etc/ssh/sshd_config の末尾に以下の行を追加します
# vi /etc/ssh/sshd_config Match LocalPort 22 AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp
3. 変更を加えたら、sshd サービスを保存して再起動します。
# service sshd restart
これにより、sftp 接続のみにポート 22 が許可されます。ポート 2222 はサーバーへの ssh に使用できます。
確認
構成を確認しましょう。まず、デフォルトのポート (22) でサーバーに ssh してみます。以下の例に示すように、失敗するはずです:
# ssh [email protected] [email protected]'s password: This service allows sftp connections only. Connection to 192.168.10.12 closed.
ここで、ポート 2222 も指定して ssh を試します。今回は成功するはずです。
# ssh -p 2222 [email protected] [email protected]'s password: Last login: Mon Apr 17 15:23:58 2018 from ......
最後の確認として、デフォルトのポート、つまり 22:でシステムに sftp してみてください:
# sftp [email protected] Connecting to 192.168.10.12... [email protected]'s password: sftp>