FTPS は File Transfer Protocol over SSL/TLS の略で、従来の FTP に TLS による暗号化 を組み合わせたファイル転送プロトコルです。
名前が似ている SFTP とは仕組みも歴史も別物なので、混同に注意が必要です。
まず押さえたいポイント
- FTPS =
FTP + TLS、SFTP =SSH 上のファイル転送プロトコル。名前は似ているが完全に別物 - ポートは
21(Explicit FTPS) または990(Implicit FTPS)。SFTP は22 - 制御チャネルとデータチャネルを別ポートで張る
FTP の変則的な作りをそのまま継承している - 金融、物流、EDI など 取引先が指定する場面で出会うレガシー寄りプロトコル
Explicit FTPS と Implicit FTPS
FTPS には 2 つのモードがあります。
Explicit FTPS(FTPES) — 21 番に平文の FTP として接続し、AUTH TLSコマンドで暗号化に切り替える。RFC 4217 で標準化。現在の主流。Implicit FTPS— 最初から TLS で 990 番に接続する。古い実装が多く、新規導入では非推奨。
新規構築なら Explicit FTPS か、可能なら SFTP を選ぶのが安全です。
FTPS と SFTP の選び方
新規構築なら SFTP が圧倒的に簡単です。
SFTPは SSH 上で動くので、ポートは 22 番 1 つで済む- FTPS はファイアウォール越しに
パッシブポート範囲を開ける必要があり、運用がややこしい - 鍵管理も SFTP のほうが SSH の慣習をそのまま使える
それでも FTPS が必要になるのは、取引先のシステムが FTPS しか喋れない 場合がほとんどです。
curl で FTPS を扱う
クライアントは GUI なら WinSCP / FileZilla、CLI / バッチなら curl が定番です。
curl での最小例:
curl --ssl-reqd -u user:pass -T file.zip ftp://host/path/— Explicit FTPS でアップロードcurl -u user:pass ftps://host:990/path/file.zip -o file.zip— Implicit FTPS でダウンロード
--ssl-reqd を必ず付ける (TLS 必須化) のが本番運用の鉄則です。--ftp-ssl 単体だと TLS が使えないときに平文にフォールバックしてしまいます。
実務で気をつけたい誤解
FTPS = FTP の暗号版 と理解するのは正しいですが、セキュリティが完全 ではありません。
TLS 1.0 / 1.1 しか喋れない古いサーバが残っていたり、サーバ証明書チェーンが壊れていたり、パッシブポート範囲の設定漏れで通信が失敗したり、運用上の落とし穴が多いプロトコルです。
詳しくは curl コマンドと FTPS について と FTP と SSH の違いと使い分け で、ハマりどころと安全な運用パターンを整理しています。