どちらも「安全なFTP転送」として紹介されることが多く、どちらの名前にも「S」が含まれています。しかし、SFTPとFTPSはまったく異なる技術です。どちらを使うかは、多くの場合サーバー側が決めることですが、選択肢がある場合は違いを知っておくと役立ちます。
名前の由来
SFTPはSSH File Transfer Protocolの略で、FTPとは無関係の独立したプロトコルです。SSHの仕組みの上に構築されており、ファイル転送だけでなく、ファイル管理(一覧表示、削除、リネームなど)も1本の暗号化された接続で行えます。
FTPSはFTP over SSLの略で、従来のFTPプロトコルにTLS暗号化を追加したものです。既存のFTPインフラを暗号化で強化する形で、FTPの拡張版として機能します。
技術的な違い
| 項目 | SFTP | FTPS |
|---|---|---|
| ベース技術 | SSHサブシステム | FTP + TLS/SSL |
| 標準ポート | 22 | 990(暗黙)または21(明示) |
| 接続数 | 1本(コマンドとデータを共用) | 2本(制御用 + データ用) |
| ファイアウォール | 通過しやすい(ポート22のみ) | パッシブモード設定が必要な場合あり |
| 認証方式 | パスワード または SSHキー | パスワード または クライアント証明書 |
| 暗号化 | 常に暗号化 | 明示モードは任意交渉の場合あり |
FTPSの2つのモード
FTPSには「暗黙モード(Implicit)」と「明示モード(Explicit)」の2種類があります。
暗黙モード(FTPS Implicit)
接続した瞬間から暗号化が始まります。標準ポートは990番。古い規格ですが、常に暗号化されるため動作が明確です。
明示モード(FTPS Explicit / FTPES)
最初はFTPとして接続し、クライアントが AUTH TLS コマンドを送ることで暗号化を要求します。ポート21番を使用。現代的な標準で、サーバーの設定によっては暗号化なしの接続も許可される点に注意が必要です。
どちらを選ぶべきか
選択肢がある場合は、SFTPが一般的におすすめです。理由はシンプルです:
- ポートが1つ(22番)なので、ファイアウォールの設定が楽
- SSHキー認証が使えるため、パスワードより安全
- 接続が常に暗号化される(明示モードFTPSのような「任意」設定がない)
- 多くのLinuxサーバーでSSHが既に有効になっており、追加設定なしでSFTPが使える
ただし、サーバー側がFTPSしか対応していない場合(特にホスティング会社やレガシーシステム)は、FTPSを使えば問題ありません。どちらも適切に設定されていれば十分なセキュリティを確保できます。
FTPullとFTPushでの対応
FTPullとFTPushは、FTP、SFTP、FTPS(暗黙・明示両モード)のすべてに対応しています。接続設定でプロトコルを選ぶだけで、あとは自動で処理されます。SSHキー認証にも対応しているため、鍵ファイルを指定するだけでパスワードなしのSFTP接続が可能です。