2021/01/18

SFTPとは?SFTPの基礎とAWSでSFTPを利用する方法を解説!

 
  

SFTPの基礎

Amazon S3など、AWSにファイルを転送する際、安全に転送できるSFTPに対応したファイル転送アプリを利用します。 そしてAWSでは、AWS Transfer Familyにより、SFTPによるファイル転送が利用可能です。それではSFTPとは、どのような仕組みなのでしょうか。 ここでは、他のファイルを転送する仕組みと比較しながら、SFTPの特徴を紹介します。

SFTPとは何か

SFTPは、SSH File Transfer Protocolの略で、昔からFTPとして知られているファイル転送の仕組みを、SSHを利用したセキュアな通信を利用するための仕組みです。 なお、SSHとは、Secure Shellの略で、通信データを暗号化することで、送信の途中でのぞき見されないようにする技術です。 そしてSFTPは、昔からよく使われているFTPと同じ手順で、しかもデータを暗号化し安全に送れる点が特徴になっています。

FTPとSFTPの違い

昔からファイル転送にはFTPが使われていましたが、FTPではデータをそのまま送信していたので、アカウント名やパスワードを途中で読み取られる危険性がありました。 そのため、以前ならWebブラウザもFTPによるファイル転送をサポートしていたのですが、セキュアな送信でないことから、今では使えません。 その点、SFTPは、データが全て暗号化されるので、そのような危険がありません。また、FTPクライアントアプリのほとんどが対応しているので、使い慣れたアプリをそのまま利用できます。 なお、SFTPと同じように、データ通信をTLSまたはSSLで暗号化するFTPSという方法もあり、AWS Transfer Familyでは、この方法もサポートしています。 この方法も、ほとんどのFTPクライアントアプリが対応しているので、AWSではSFTPと同じように利用できます。

scpとSFTPの違い

AWSへのファイル転送を実現するAWS Transfer Familyでは、SFTP、FTP、FTPSの3つの方法に対応しています。 この他に、オープンソースのSSHを利用したファイル転送コマンドscpがあり、多くのLinuxで利用できます。そして、SSHを利用していることから、送信データが暗号化されるので、途中で読まれる心配はありません。 ただし、scpには「通信が途切れた場合に、自動的に再接続して送り直す」といったFTPに備わるフェイルセーフ機能がありません。その観点からも、SFTPの利用をおすすめします。

AWSでSFTPを利用する方法

先ほど解説したように、SFTPは安全にファイル転送するための仕組みです。また、AWSでは、AWS Transfer FamilyによりSFTPを利用できます。ただし、AWS Transfer Familyを利用するためには、手続きが必要です。 ここからは、AWS Transfer Familyを使用し、SFTPを使うための手続きについて紹介します。

Amazon S3バケットを作成する

AWSでSFTPを利用する場合、転送したファイルを格納する領域が必要です。そして、その受け皿となるAWSのストレージサービスが、Amazon S3です。 SFTPの設定を実施する前に、Amazon S3の領域を作っておきましょう。

SFTP対応サーバーを作成する

AWS Transfer FamilyでSFTPを利用するには、SFTP対応サーバーを作成する必要があります。AWS Transfer Familyの専用ページにアクセスし、サーバーを作成してください。なお、サーバー作成時に、次の4つの項目が求められます (1) プロトコルの選択 SFTP、FTPS、FTPの3つから、選択します。ここで、SFTPを選んでください。 (2) IDプロバイダータイプを選択 利用する予定のIDプロバイダータイプを指定します。 (3) エンドポイントとホスト名の設定 エンドポイントとは、SFTPでアクセスするクライアント端末のことです。インターネットに公開するか、それともAmazon VPCの仮想ネットワークのどちらかを選択します。さらに、SFTPサーバーのホスト名もここで設定可能です。 (4) その他の設定 ログの設定や暗号化する際に使用するキーなど、必要に応じて設定します。

ユーザーを作成する

先ほどの手順でサーバーができたら、続いてアクセスの際に使用するユーザーを作成してください。AWS Transfer Familyの管理コンソールのUserセクションから、簡単に作成できます。 この場合Amazon S3に用意したバケットに対する操作を許可するポリシーが必要です。また、SFTPでアクセスする際、パスワードを使わず、SSHの公開鍵で認証します。「SSH public keys」も必ず設定してください。 この手順によりユーザーが作成できたら、SFTPによるファイル転送が可能です。

AWS Transfer Family設定時の注意点

クラウドを利用する場合、SFTPが使えるサイトが多く、SFTPを使い慣れている方もいるでしょう。しかし、そういった方の中にも、AWS Transfer Familyの設定がうまくできないという方もいるのではないでしょうか。 AWS Transfer Familyには、Q&AをまとめたWebページも用意されていますが、それを読んでもよく解らない、という点もあるでしょう。 ここでは、AWS Transfer Family設定時の特に注意してほしい点について説明します。

SSH public keyの設定が必要

AWS Transfer FamilyによりSFTPで接続する際は、パスワードを使いません。ユーザー作成時に、SSH public keyを登録することで、SSHのパスワードを省略する手順と同じ手順で認証します。 そのため、あらかじめアクセスするFTPクライアント側でSSH public keyを生成し、それをユーザー作成時に登録する必要があります。 AWSの公式ドキュメントにOS毎の生成手順が解説されていますので、それを参考にして作成してください。

ポリシーの設定に注意

AWS Transfer Familyでユーザーを作成する際、必ずポリシーを設定しなければなりません。 そのポリシーとして、AWS Transfer Familyを利用するためのポリシーとAmazon S3に接続するためのポリシーの2つが必要です。 もし、SFTPで接続できたのに、「権利が無い」といったメッセージが表示される場合は、SFTPの接続で利用したユーザーに割り当てたロールの信頼関係に、次のように2つ設定されているかチェックしてみてください。
アクセスコントロールポリシードキュメントの例
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "transfer.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
この例では、「transfer.amazonaws.com」と「s3.amazonaws.com」の2つが設定されているので、SFTPを介してAmazon S3にアクセスできます。

まとめ

これまで説明したように、AWSのようなクラウド上にファイルを転送する場合は、暗号化されたSFTPを使うのが一般的です。そして、AWSでは、AWS Transfer Familyを利用することで、Amazon S3へのファイル転送にSFTPを利用できます。 なお、AWS Transfer FamilyでSFTPを使うには、SSHで暗号化して送信するために公開鍵をあらかじめ登録したり、接続に利用するユーザーのロールを設定する必要があるなど、少し手間がかかります。 しかしながら、1度設定してしまえば、使い慣れたFTPソフトなどで簡単に使えるので、ぜひAWS SFTPを利用してください。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】