SSH File Transfer Protocol

SSH File Transfer Protocol(SFTP)について



SFTP(SSH File Transfer Protocol)は、信頼性の高いデータストリーム上でのファイル転送と管理を目的とした通信プロトコルです。IETF(Internet Engineering Task Force)によって、SSH-2(Secure Shell version 2.0)の拡張として設計され、安全なファイル転送機能を提供します。このプロトコルは、SSH-2に関連付けられていますが、TLS(Transport Layer Security)経由の安全なファイル転送や、VPNアプリケーションの管理情報の転送など、さまざまな場面での利用が可能です。

SFTPの概要



SFTPは、セキュアな通信路、例えばSSH上で動作することを前提としています。サーバは既にクライアントを認証済みであり、クライアントユーザのIDがプロトコル内で利用可能であることが前提となります。SCP(Secure Copy)がファイル転送のみに限定されるのに対し、SFTPはリモートファイルシステムのように、リモートファイルに対する一連の操作が可能です。例えば、中断された転送の再開、ディレクトリリストの取得、リモートファイルの削除など、より高度な操作がSFTPクライアントによって実現できます。

SFTPはプラットフォームに依存しないように設計されており、SCPのようにサーバの実装に依存するワイルドカードの拡張問題を回避できます。SCPサーバはUNIXプラットフォームで実装されることが多いのに対し、SFTPサーバは多くのプラットフォームで利用可能です。ただし、ファイル転送速度においては、SCPの方がSFTPよりも高速な場合があります。また、SFTPではファイル転送だけを容易に終了でき、セッション全体を終了する必要はありません。

SFTPは、SSH上で動作するFTPではなく、IETF SECSHワーキンググループによってゼロから設計された新しいプロトコルです。同じ略称のSimple File Transfer Protocolと混同しないように注意が必要です。

SFTPプロトコル自体は、認証やセキュリティ機能を提供せず、基盤となるプロトコルがそれらを保護することを前提としています。そのため、SFTPは同じワーキンググループによって設計されたSSH-2実装のサブシステムとして利用されることが一般的です。SSH-1や他のデータストリームでも実行可能ですが、SSH-1ではサブシステムの概念がないため、SFTPサーバの実行はプラットフォームに依存します。また、SSH-1サーバに接続するSFTPクライアントは、サーバ側のSFTPサーババイナリへのパスを把握している必要があります。

アップロードされるファイルは、ローカル側のタイムスタンプなどの基本的な属性を引き継ぐ場合があり、これは一般的なFTPプロトコルよりも優れた点です。

開発の歴史



IETFのワーキンググループ"Secsh"は、SSH-2(RFC 4251)の開発を担当しました。その後、同グループは安全なファイル転送機能の標準拡張案を作成し、インターネットドラフトが作成されました。ドラフトは改訂を重ね、ソフトウェア業界は標準化前の様々なバージョンで実装を開始しました。開発が進むにつれて、Secshファイル転送プロジェクトの範囲は拡大し、ファイルアクセスやファイル管理も含むようになりました。

しかし、一部の委員会メンバーがSFTPを単なるファイル転送プロトコルではなく、「ファイルシステムプロトコル」と見なしたことから、ワーキンググループの範囲を超えた開発が行われ、SFTPの開発は停滞しました。7年間の休止を経て、2013年にバージョン3のドラフトをベースラインとして、SFTPの開発が再開されました。

バージョン0〜2


IETFが関与する以前、SFTPはSSH Communications Securityの独自プロトコルであり、1997年にTatu Ylönen氏によって設計されました。バージョン0〜2とバージョン3の違いは、draft-ietf-secsh-filexfer-02のセクション10に詳しく記載されています。

バージョン3


IETF Secure Shell File Transferプロジェクトの立ち上げ時に、SecshワーキンググループはSFTPの目的を、信頼できるデータストリーム上での安全なファイル転送機能の提供と、SSH-2プロトコルで使用する標準ファイル転送プロトコルにすることと定義しました。インターネットドラフトのDraft 00〜02では、プロトコルのバージョン3が定義されています。


バージョン4


インターネットドラフトのDraft 03〜04では、プロトコルのバージョン4が定義されています。


バージョン5


インターネットドラフトのDraft 05では、プロトコルのバージョン5が定義されています。


バージョン6


インターネットドラフトのDraft 06〜13では、プロトコルのバージョン6が定義されています。


ソフトウェア



SFTPクライアント


"SFTP (sftp)"という言葉は、プロトコルのクライアント部分を実装するコマンドラインプログラムを指す場合もあります。例えば、OpenSSHには、サブシステムとしてsftpコマンドが含まれています。また、scpクライアントの一部には、サーバが対応しているプロトコルに応じて、SFTPとSCPの両方でファイル転送を行う機能があります。

SFTPを利用できるアプリケーションには、コマンドライン形式のsftpコマンドに加えて、以下のGUIクライアントがあります。

  • - WinSCP
  • - FileZilla
  • - EmFTP
  • - Cyberduck
  • - Transmit

SFTPサーバ


FTPサーバの一部にはSFTPプロトコルを実装しているものもありますが、SFTPプロトコルへの対応は通常、SSHサーバの実装によって提供されます。これは、SFTPプロトコルがデフォルトポート22を他のSSHサービスと共有するためです。

関連項目



  • - SSHクライアントの比較
  • - SSHサーバの比較
  • - Files transferred over shell protocol (FISH)
  • - FTPS
  • - Category: FTPクライアント

脚注



外部リンク



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。