イラストで理解するSFTP

SFTPに関する概要の記事です。 SFTPとは、FTP、FTPS、HTTPSとの違いなどを書いていきます。
2023.11.15

はじめに

ファイル転送のプロトコルであるSFTPを学習する機会がありましたので、学習する中で気になった部分を記事にしていきます。

SFTPって何?

まずはSFTPの前にFTPについて少し触れます。
FTP(File Transfer Protocol)は名前の通り、ファイルを転送するプロトコルです。
もう少し簡単にいうと、インターネットを通じてサーバーとファイルをやり取りするための方法です。

FTPは歴史のあるプロトコルで、現在も様々なところで使われています。
今日もFTPが利用されているのは、インターネットを経由して簡単にサーバーとファイルの受け渡しができるという使い勝手の良さからだと思います。

また、FTPには便利なFTPクライアントソフトがあり、日常的な操作と同じようにサーバーとファイルを受け渡しできるという点も大きいでしょう。
では、FTPの前に「S」がついたSFTPとはなんでしょうか。

SFTP(SSH File Transfer Protocol)はサーバーとファイルをセキュアにやり取りするためのプロトコルです。
あれ?FTPも同じことを言ってたような...しかし、大きく違う部分があります。
それは「セキュアに」という部分です。

FTPは現在も使われている非常に便利なプロトコルです。
しかし、FTPには欠点があります。
FTPは通信が暗号化されておらず、安全な通信とは言えません。

そこでSFTPを使うことで、SSHをベースとしたファイルのやり取りができるようになり、
よりセキュアにファイルの受け渡しができるようになります。
つまり、SFTPはFTPの欠点を補うために生まれたプロトコルです。

SFTPのSを「SSHを使ったセキュアな」と考えると覚えやすいですね。
現在は特別な要件がない限り、SFTPを使うのが一般的です。

また、FTPにSSL/TLSを用いたFTPS (File Transfer Protocol over SSL/TLS)というものも存在します。
こちらはFTPの拡張機能的な位置付けで、SSL/TLS証明書を用いてFTPの通信を暗号化します。
FTPSはファイアウォールに引っかかることも多いようで、やはりSFTPが推奨されます。

どれも名前が似ていてややこしいですね...

また、FTP,FPTS,SFTPそれぞれ使用するポート番号が違うので注意が必要です。
特にFTP,FTPSは制御とファイル転送の通信で2つのポートを使用するため、それぞれのポートを開放する必要があります。

使用ポート番号

        転送ポート 制御ポート
FTP    20  21   
FTPS  989 990 
SFTP  22  22   

HTTPSとは違う

私たちが普段使用しているファイルの送受信といえば、ウェブブラウザ上で行うことが多いかと思います。
これにはHTTP/HTTPS(以後HTTPSと表記)というプロトコルを使用しています。

ではSFTPとHTTPSは何が違うのでしょうか?
HTTPSは主にウェブブラウザ上でデータをやり取りする際に使われます。
Google Driveなどでファイルを管理するのがその一例で、これにはHTTPSが使用されています。

HTTPSでの通信ではサイトのURLなどを使って、データを持っているサーバーにリクエストを送ります。

それに対して、SFTPはIPアドレスとホスト名を使ってサーバーと接続します。
SFTPは企業のシステム間でのデータ転送などでよく使われているイメージです。

HTTPSは都度サーバーにデータをリクエストするのに対し、SFTPはサーバーに接続してやり取りを行います。
どちらがいい、という訳ではなくそれぞれに適した環境があります。

SFTPは何がいいの?

SFTPは以下のようなメリットがあります。

  • SSHベースのセキュアな通信
  • 大きいデータの転送が可能
  • SFTPクライアントソフトウェアで簡単にファイル操作ができる

SFTPは大きいデータをシステム間でセキュアにやり取りするのに向いています。
また、SFTPは使いやすいソフトも複数あり、要件に合わせて選択することができます。

WindowsではWinSCPが有名で、MacやLinuxでも使えるFileZillaというソフトもあります。
SFTPクライアントソフトウェアはローカルのフォルダやファイルを操作するように簡単に操作することができます。

昔からWindowsでよく利用されているソフトでFFFTPというソフトがありますが、こちらはSFTPには対応しておらずFTPSのみ対応しているため、もし使用する際は開放するポートに注意が必要です。

SFTPには何が必要?

SFTPで通信を行うにはいくつか用意するものがあります。

  • クライアントにSFTPソフトウェアをインストールする
  • サーバーのIPアドレス or ホスト名
  • ユーザー名(サーバー側)
  • パスワード(公開鍵認証の場合は不要)
  • サーバー側の22番ポート開放

図にするとこんな感じです。

公開鍵認証を行う場合は、パスワードは必要ありません。
その代わり、認証を行う公開鍵をサーバーに登録する必要があります。
特別な要件がなければ、よりセキュアな公開鍵認証を選択しましょう。

まとめ

FTPにSがついてるとセキュアなんだな〜くらいの印象でしたが、改めて調べてみると色々と違いがあることに気づくことができました。