Skip to content
nishi_74322014 edited this page Aug 3, 2026 · 1 revision

FTP

概要

  • インターネット初期の頃から存在するプロトコル
  • 任意のホスト間のファイル転送を行うことが可能
  • 通常は接続したクライアントとサーバ(FTPサーバ)間の転送に利用される。

モード

以下の2つのモードがある。

アクティブ

inboundを受け入れないF/Wと相性が悪く、最近は使用されていない。

  • クライアント → サーバ
    クライアントがサーバへ待ち受けIPアドレスとポート番号を通知
  • サーバ → クライアント
    • サーバがクライアントから通知されたIPアドレスのポート番号へコネクションを確立しに行く。
    • ポート番号が毎回異なるので、ファイアウォール、NAPTを使った環境では、
      場合によってはうまく接続できないこともある。この場合はパッシブモードを用いる。

パッシブ

こちらも、イントラ → クラウド環境での接続では、
サーバー側のNAPTと相性が悪くサーバー側に設定が必要になる。

  • クライアント → サーバ
    サーバがクライアントへ待ち受けポート番号を通知する。
  • サーバ → クライアント
    待ち受けポート番号の通知を受けたクライアントがサーバにコネクションを確立しに行く。

セキュアなFTP

FTPは、セキュア(安全)なプロトコルとして設計されていないため、
インターネット回線を経由するケースなど、FTPSSFTPが利用されるようになった。

FTPS

概要

  • FTPで送受信するデータをTLSまたはSSLで暗号化する通信プロトコル。
  • Well-known Portは、990/tcp(IISのFTPSは、port 21をFTPと共有)。
  • RFC 2228, 4217 で標準化されている。

モード

  • Explicitモード
    • STARTTLS(平文の通信プロトコルを暗号化通信に拡張する方法)
    • 認証コマンド実行後に暗号化通信を開始する。
    • 認証コマンドを実行しなければ通常のFTPとして機能する。
  • Implicitモード
    • サーバ接続開始時点から暗号化通信を開始する。
    • クライアントはサーバが採用している暗号化プロトコルに適合したFTPSクライアントソフトを使用する必要がある。
    • RFC 4217 では正式には規定されておらず、慣行として実装されている。

移行メモ: 原文は「RFC 4217ドラフトは削除されており、現在、正式なRFCとして掲載されていない」と していたが、RFC 4217 自体は正式に発行されている。 正式規定から外れたのは Implicit モードのほうであるため、その旨に整えた。

SFTP

  • Secure Shell(SSH: MS_SSH.md)上でSFTPコマンドを実行してファイル転送する。
  • ただし、SFTPコマンドはFTPコマンドとはまったく別物。

FTPS vs SFTP

FTPS

  • メリット
    • ASCII/BINARY モードのサポート
    • フォルダ単位での転送
  • デメリット
    サーバ側でSSL証明書の購入コストが発生
    ※ ワイルドカード証明書でWebサイトと共通可能。

SFTP

移行メモ: 元 Wiki では SFTP のメリット・デメリットが見出しのみで未記載。

補足すると、SFTP は SSH の単一ポート(22/tcp)で完結するため ファイアウォール/NAT との相性が良く、鍵認証をそのまま使える点が実務上の利点。 一方、ASCII モード(改行コード変換)を持たない点は FTPS と異なる。

クライアント

ツール

FFFTP

  • 日本製のFTPクライアント
  • FTPSなどのサポートも加えられるなどメンテも続いていた。
  • しかし、WinSCPの隆盛に従い、二代目開発者氏曰く、
    最終バージョン2.00のリリースで開発の終了を検討しているもよう。

FileZilla

成果物は、クライアントとサーバーの両方がある。

  • クライアント
    • Windows、Linux、macOS
    • FTP、SFTP、FTPS(FTP over SSL/TLS)
  • サーバー
    • FTPと FTP over SSL/TLS をサポート
    • クライアントと異なり、Windowsだけサポート。

WinSCP

  • オープンソースで開発されている FTP/SFTP/SCP クライアントソフト。
  • こちらが主流になりそう。

ライブラリ

WinInet

FtpWebRequest

非推奨

System.Net.FtpClient

FtpWebRequest の後継 → FluentFTP

FluentFTP

System.Net.FtpClient の後継

  • NuGet Gallery | FluentFTP

  • robinrodricks/FluentFTP

    スピードのために最適化された .NET & .NET Standard 用の FTP および FTPS クライアント。 豊富な FTP コマンド、ファイルのアップロード/ダウンロード、SSL/TLS 接続、 自動ディレクトリリスト解析、ファイルハッシュ/チェックサム、 ファイルパーミッション/CHMOD、FTP プロキシ、FXP サポート、UTF-8 サポート、 Async/await サポート、PowerShell サポートなどを提供します。 完全に C# で書かれており、外部からの依存関係はありません。

その他

参考

クラウド環境にFTPサーバを構築する場合

MS_FTPServerOnCloud.md


Tags: IT国際標準, インフラストラクチャ, 通信技術, IIS

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally