sshd_config編集
以下、CentOS 7 x86_64系が前提になります。
# override default of no subsystems
#以下、コメントアウト
#Subsystem sftp /usr/libexec/openssh/sftp-server
#sshd再起動
systemctl restart sshd
systemctl status sshd
# 今回は、FTPクライアントソフトでSFTPできないことを確認。
# 以下、エラーメッセージ
状態:Using username "Linux User".
状態:Connected to ”IP or Host”
エラー:FATAL ERROR: Received unexpected end-of-file from SFTP server
エラー:サーバーに接続できません
エラー:FATAL ERROR: Remote side unexpectedly closed network connection
# SSHはできることを確認。
ssh -i "Pemファイル" "Linux User"@IP or Host
どうやら、以下の行で管理ができる模様。
時間が出来次第、仕組みを調べてみたい。
Subsystem sftp /usr/libexec/openssh/sftp-server
2022/03/27追記
コメントをいただき、以下追記です。
全く頭になかった発想、考え方でした。非常に参考になります。ありがとうございます。m(_ _)m(コメント欄参照)
シェルが起動出来る時点で様々な事が出来るため、SFTPだけ禁止してもほとんど意味が無い。
それでも禁止したい場合、上記設定だけだと以下のようにすればSFTP出来てしまう。
## subsystemではなくexecでsftp-serverを起動するという方法
sftp -s /usr/libexec/openssh/sftp-server user@hostname
この方法はsftpのman pageにも「sshdでsftp subsystemが設定されていない時に使える」として書かれている。
なので、sftp-serverの読み込み権/実行権も落とす方がいい(もしくは削除する)
chmod 0 /usr/libexec/openssh/sftp-server
参考
- https://qiita.com/li-li-qiita/items/ebd5ef13c659195017bd
- https://serverfault.com/questions/792956/sftp-cant-access-but-ssh-working-fine-when-i-changed-ssh-port
- https://www.ibm.com/support/pages/sftp-client-begin-session-failed-connect-sftp-server-cannot-authenticate-error-sci99714
参考にさせていただきました。ありがとうございます。