SFTPとFTPS：適切なプロトコルを選択する方法は？

SFTPとは何ですか？その使用方法は？
-
SFTPは、Secure File Transfer Protocol、より正確にはSecure Shell File TransferProtocolの略です。実際には、インターネット経由でファイルを転送するためのFTPのように機能しますが、技術的には、セキュリティに重点を置いたまったく異なるプロトコルです。

![qqq.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740997/23105595-6440-4e97-4cb7-09bfeb68faca.png)

SFTPを使用する場合、サーバーは送信者と受信者の両方のIDを確認する必要があります。これは、ユーザーIDとパスワード、またはSSH（Secure Shell）キーのいずれかを使用して行われます。 SSHキーを使用すると、ハッカーが接続をスプーフィングしたり、ユーザーとパスワードの組み合わせを偽装したりすることが非常に困難になるため、後者が推奨されます。

これは、SSHキーのペアが必要であるという事実によるものです。1つのSSHキーは送信者のコンピューターに保存され、もう1つはサーバーにロードされます。接続は、キーが一致する場合にのみ検証されるため、ユーザーIDとパスワードが危険にさらされても、接続は安全に保たれます。

SFTPを使用する最も簡単な方法は、SFTPプロトコルを使用できるCommanderOneなどのFTPクライアントを使用することです。コマンドラインクライアントも使用できますが、これは上級ユーザーにのみお勧めします。

SFTPを使用する利点
-
送信者（クライアント）と受信者（サーバー）の両方を一意に生成されたSSHキーのペアで検証する必要があるため、SFTPのセキュリティは非常に高くなっています。 これは、データ転送プロセス全体にわたって保護を提供する唯一のファイル転送プロトコルです。悪意のある攻撃者は、チェーンのどの時点でも脆弱性を見つけることができません。

これは、インターネット経由でファイルを転送する最も安全な方法の1つであるだけでなく、最も簡単な方法の1つでもあります。

他のファイル転送プロトコルとは異なり、SFTPは単一のポート（TCPポート22）を使用してサーバーへの接続を確立し、優れたデータの整合性と暗号化を保証します。 これにより、ほとんどのユーザーにとってファイル転送の推奨される方法になります。

FTPSとは何ですか？ その使用方法は？
-
FTPSの意味：ファイル転送プロトコルセキュア。最も単純なFTPSはFTPの拡張です。どちらも同じプロトコルで同じように機能しますが、クライアントとサーバー間でファイルを転送する場合、FTPだけでは暗号化は提供されません。

![uuu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740997/c471ca76-3947-36fc-3bbf-2cecaaf601ec.png)

FTPSプロトコルは、SSL（Secure Sockets Layer）証明書などのサードパーティの証明書を介して暗号化を追加しますが、できればトランスポート層セキュリティ（TLS）を介して暗号化を追加します。単一の暗号化された通信チャネルを使用するSFTPとは異なり、FTPSは2つを使用します。1つはコマンド用の接続で、もう1つはデータ転送用です。そして、それがSFTPとFTPSの主な違いにつながります。

FTPSには、実際には暗黙的なFTPSと明示的なFTPSの2種類があります。暗黙的なFTPSは、コマンド接続とデータ接続の両方を常に暗号化します。コマンドをスプーフィングしたり、データを傍受したりできないため、これは最も安全なタイプです。問題は、大きなファイルを常に暗号化すると多くの帯域幅が使用されるため、転送が遅くなる可能性があることです。明示的なFTPSでは、コマンドとユーザー認証のみが常に安全です。データチャネルは暗号化または暗号化解除できます。

この柔軟性は、速度が必要であり、データセキュリティが常に不可欠であるとは限らない非機密ファイル転送に役立ちます。サーバーへのアクセスは引き続き安全であり、コマンドを傍受することはできませんが、データは傍受に対して脆弱です。 FTPSを使用するには、FTP overTLSをサポートするFTPクライアントをお勧めします。コマンドラインクライアントも使用できます。

FTPSを使用する利点
-

機密性の低いデータの大きなファイルは暗号化されない可能性があるため、明示的なFTPSの速度はSFTPよりも高速です。 これは、すでに公開されている大きなファイルをすばやく転送するのに役立つ場合があります。

FTPSにはいくつかの欠点もあります。 FTPSは、より多くのファイアウォール構成を必要とするため、実装がより複雑です。 これにより、セットアップがより困難になり、SFTPよりも速度が優れていることが相殺されます。 追加の構成要件により、接続が開いているときにファイアウォールの脆弱性が明らかになる可能性もあります。

SFTPとFTPSの違いは何ですか
-

FTPやFTPSとは異なり、SFTPは1つの接続のみでSecureShellプロトコルを使用します。認証情報と転送されるファイルの両方を常に暗号化します。

SFTPも単一のポート番号を使用するため、ファイアウォールのアクセス許可を簡単に構成できます。 FTPSは、FTPプロトコルにセキュアレイヤーを追加します。 FTPと同様に、2つの接続を使用します。1つはデータ転送用で、もう1つはコマンド用です。明示的なFTPSで暗号化をオフにできるため、速度は少し速くなりますが、SFTPほど安全ではなく、構成も簡単ではありません。

SFTPはどのポートを使用しますか？
-
SFTPはポート22を使用します–これは構成する唯一のポートであり、SFTPを迅速かつ簡単に実装できます。

FTPSはどのポートを使用しますか？
-
SFTPと比較すると、FTPSプロトコルのポートは少し複雑です。 コマンドの場合、明示的FTPSはポート21を使用し、暗黙的FTPSはポート990を使用します。接続されると、クライアントとサーバーはデータ転送用のポート（デフォルトでは、ポート20またはランダムポート）をネゴシエートします。 これは、接続がアクティブかパッシブかによって異なり、パッシブの方が安全です。ただし、これには追加のファイアウォール設定の変更が必要になる場合があり、ファイアウォールに一時的な穴が残る可能性があります。

何を選択するか：SFTPまたはFTPS？
-
したがって、SFTPとFTPSの対決では、勝者は1人だけであり、SFTPがタイトルを獲得します。

FTPSに比べて速度がわずかに劣りますが、完全に暗号化されたセキュリティ機能とシンプルさは、SFTPが安全なファイル転送に最適なプロトコルであることを意味します。 FTPSは依然として非常に安全ですが（特に暗黙的なFTPS）、セットアップがより複雑であるため、SFTPに比べていくつかの欠点があります。ただし、レガシーシステムの場合は、依然として強力で安全なファイル転送方法です。

SFTP / FTPSクライアントの選び方
=
SFTP / FTPSクライアントを選択することは、難しい決断のように感じるかもしれません。非常に多くの有料および無料のオプションが利用可能であり、すべて同様の機能と機能を備えています。それらを区別するのは難しい場合があります。

最高のSFTP / FTPSクライアントは、シンプルで柔軟なユーザーインターフェイス、デュアルパネルビュー、およびFTPSやSFTPを超える柔軟なFTPオプションを提供します。また、コマンド端末やクラウドコンピューティングプラットフォームとの統合など、上級ユーザー向けのオプションも必要です。

Commander Oneは、これらすべてを実行します。

Commander Oneの紹介：Macに最適なSFTP / FTPSクライアント
-
![commander one.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740997/3271720c-6889-6ea3-1a9b-c58e9ad2e8eb.png)

[Commander One] (https://mac.eltima.com/ftp-software-mac.html)は、FTP、SFTP、FTPSを含むすべてのファイル転送プロトコルをサポートするFTPクライアントです。 これは、ユーザーに高度にカスタマイズ可能なインターフェイス、高度な機能、およびユーザーが割り当てたホットキーを提供し、超高速のファイル管理を実現します。 また、ローカルファイル、共有ネットワークファイル、およびサーバー用の高度なファイル管理システムでもあります。 サーバー上のファイルは、自分のコンピューターにローカルに保存されているかのように管理できます。

Commander One は無料で使用できますが、オープンソースではありません。つまり、定期的に更新されるため、完全に安全で信頼性があります。 上級ユーザー向けのより深い機能を含むPROバージョンが利用可能です。 この一貫した更新スケジュールは、Commander OneがAppleシリコン上でネイティブに実行されるようになり、M1チップとARMプロセッサアーキテクチャを完全にサポートすることを意味します。