2022年4月15日 | TOE
FTP・FTPS・SFTP・SCPの違いとは?おすすめクライアントツールも紹介

WebサイトはHTMLファイルや画像ファイルなど、さまざまなファイルで構成されています。パソコンで制作したこれらのファイルを、Webサーバーへアップロードするためのプロトコルとして使われているのがFTPです。ファイルの送受信のために古くから使われてきたプロトコルですが、現在ではセキュリティが強化された、FTPSやSFTP、SCPなどが使われています。この記事では、これらの違いについて詳しく紹介します。
ファイル転送プロトコルとは?

Webサイトを構成しているファイルは、もともとWebサイトの制作者のパソコンで作られたものです。Webサイトとしてインターネット上に公開するためには、これらのファイルをWebサイトの制作者のパソコンからWebサーバーへ転送する必要があります。
Webサイトの制作者のパソコンとWebサーバーはインターネット回線で接続されていますが、両者の間でファイルを送受信するためには、お互いに理解できるルールが必要です。このルールのことを「ファイル転送プロトコル」と言います。プロトコルとは日本語では「通信規約」と訳されます。
ファイル転送プロトコルの必要性
ファイル転送プロトコルの必要性について、もう少し詳しく解説しましょう。
例えばWebサイトに表示する10MBのサイズの画像ファイルを、Webサイト制作者のパソコンからWebサーバーへ転送することを考えます。
ファイル転送プロトコルでは、10MBのサイズの画像ファイルをいくつかのデータに分割して、一つずつ送信していきます。この分割されたデータのことを「パケット」と言います。例えば1つのパケットが100バイトだとすると、10MB(10,000,000B)の画像ファイルは1万個のパケットに分割されることになります。
このように分割されたパケットは、1つずつ送信元のコンピュータから送信先のコンピュータへと受け渡されます。この時、通信中にエラーが発生したときの処理や、送信するパケットの順番、受信したパケットの組み立て方など、さまざまなルールが必要となります。送信者が好きなようにパケットを送信し、受信者が好きなようにパケットを受信してしまうと、ファイルの送受信がうまくいかないからです。
そのため、予めファイルを送受信するときのルールを「ファイル転送プロトコル」として決めておいてしまい、どのようなコンピュータ間のファイル転送においても、そのルールを使うことにすれば、どんなコンピュータ間でも、スムーズにやり取りできるようになります。これがファイル転送プロトコルが求められる大きな理由です。
ファイル転送プロトコルの種類

一口にファイル転送プロトコルと言っても、実際にはいくつかの種類があります。ここでは頻繁に使われている「FTP」「FTPS」「SFTP」「SCP」の4つについて解説します。
FTPとは
FTP(File Transfer Protocol)とはファイル転送プロトコルとしては最も古いものです。次から紹介する3つのファイル転送プロトコルのベースとなっているプロトコルでもあります。
FTPは非常に利便性の高いプロトコルでしたが、通信の内容を暗号化できないというデメリットがあります。そのため、通信回線を盗聴している第三者から通信内容をそのまま知られてしまう危険性があります。そのため現在ではFTPが使われることは減り、暗号化に対応したファイル転送プロトコルに置き換えられつつあります。
FTPSとは
FTPS(File Transfer Protocol over SSL/TLS)とは、ファイルを転送するときに「SSL/TLS」を利用して暗号化するプロトコルです。
SSL/TLSとは、暗号化や復号化に公開鍵暗号や秘密鍵暗号を組み合わせている技術のことです。厳密にいうとSSLをバージョンアップさせたものがTLSですが、一般的にはSSL/TLSとまとめて表記することが多いです。
SSL/TLSはブラウザを使ってWebサイトを閲覧するときの暗号化にも使われています。ブラウザのアドレス欄の右側に「鍵マーク」のアイコンが表示されているときは、SSL/TLSによって通信が暗号化されているWebサイトであることが分かります。
FTPSでは通信の暗号化をSSL/TLSで行う方法であり、ファイル転送自体はFTPを使って実行します。
SFTPとは
SFTP(SSH File Transfer Protocol)とは、SSH(Secure Shell)により暗号化されているプロトコルのことです。SSHとは、ネットワークで接続されているコンピュータを操作するときにやり取りされる情報を暗号化できる機能のことです。WindowsではCygwinやWinSCPなどのソフトに搭載されており、Linuxではデフォルトで搭載されております。
SFTPはSSH上でsftpコマンドを使って、ファイルを指定したり転送を開始したりできます。コマンドの使い方はFTPと似ていますが、FTPとは仕様が異なります。
SCPとは
SCP(Secure Copy Protocol)もSSHによって通信が暗号化されているプロトコルです。SFTPよりも通信速度が速いというメリットを持ちます。しかしSCPを使うためにはWebサーバーにUNIX系のシェルが搭載されていることが必要です。多くのWebサーバーには、UNIX系のシェルが搭載されているので、それほど意識する必要はないでしょう。
HTTPとHTTPSについて

ファイル転送プロトコルとして、FTP・FTPS・SFTP・SCPを紹介してきました。プロトコルには他にもいくつかあるのですが、その中でもユーザーに馴染みがあるのが、HTTP(HyperText Transfer Protocol)とHTTPS(HyperText Transfer Protocol over SSL/TLS)です。
HTTPとは、Webサーバーからブラウザへとファイルを送信するためのプロトコルです。HTTPでは、ブラウザからWebサーバーへとリクエストを送信して、Webサーバーはリクエストに応じて、必要なファイルをレスポンスとしてブラウザに送信します。一つひとつのファイルに対して、リクエストとレスポンスを繰り返してブラウザはファイルを受信して、ブラウザはHTMLという文法にしたがってWebサイトを表示させる仕組みです。
HTTPをSSL/TLSを使って暗号化させたプロトコルがHTTPSです。インターネットの普及にともない、Webサーバーとブラウザの間の情報を盗聴するサイバー攻撃が増えてきました。これにともない通信を暗号化するHTTPSが求められるようになりました。
現在では、Google ChromeなどのブラウザがHTTPSに対応していないWebサイトを表示するときに警告が表示されるようになるなど、もはやHTTPSが標準のプロトコルのような状況になっています。またSEOの観点でもHTTPSに対応していることが上位に表示される要因となっています。
FTPクライアントツール

ここまで、さまざまなファイル転送プロトコルについて紹介してきました。次からは、これらのファイル転送プロトコルに対応しているFTPクライアントツールについてご紹介します。
FileZilla
FileZillaはWindowsとMacの両方で動作するFTPクライアントです。FTPクライアントとして豊富な機能を持ち、FTP・FTPS・SFTPに対応しています。
オープンソースのソフトウェアなので、世界中で多くのエンジニアが開発に携わっており、もちろん日本語にも完全対応しております。標準ではさまざまな項目が表示されていますが、自由に項目の追加と削除のカスタマイズもできます。
FileZilla
WinSCP
WinSCPはWindowsのみに対応しているFTPクライアントです。FTP・FTPS・SFTP・SCPの4つのプロトコルに完全対応していることに加え、WebDAVやAmazon S3なにも対応しています。
マスターパスワード機能が搭載されているので、万が一のパソコンの盗難や紛失時にも、設定されているサーバー情報の流出を防ぐことが可能です。またタブ切り替えによる複数の同時接続や、ローカルとリモートでの同期やミラーリングもできます。さらにサーバー上にあるテキストファイルを直接編集できるエディタを搭載しているため、設定ファイルの変更時などに非常に役立ちます。
WinSCP
FFFTP
FFFTPはWindowsで動作するFTPクライアントとしては、非常に長い歴史をもつソフトウェアです。テキストファイルの漢字コード変換など日本語環境ならではの機能を搭載しており、ローカル側で変更されたファイルだけアップロードするなど、静的なWebサイトを構築するときに便利な機能も備わっています。
フォルダを丸ごとアップロードするときに、除外するファイルやフォルダを予め指定することもでき、途中で転送が中断したファイルの転送を途中からやり直せるレジューム機能もあります。
しかしSFTP接続には対応しておらず、オープンソースでありながら最近ではバージョンアップも停止しているため、先ほど紹介したFileZillaやWinSCPへ乗り換えたユーザーも多くいるようです。
FFFTP
まとめ
この記事では、FTPの代替となる暗号化されたファイル転送プロトコルの違いについて解説してきました。インターネットの黎明期から存在しているFTPですが、現在は暗号化に対応している各種のファイル転送プロトコルの使用が標準となっています。サーバーによって対応しているプロトコルは異なりますが、安全にファイルを送受信するためにも、暗号化されているプロトコルに対応しているか、確認することをおすすめします。