SFTPで、1行のコードも書かず、1台のサーバーも維持することなく、手動および自動処理のための安全なファイル転送を設定することができます。

SFTPは、非常に古い上に暗号化されていない、お馴染みのFTPプロトコルをベースとした安全なファイル転送プロトコルです。

SFTPは、クライアントとサーバー間の安全な通信チャネルを提供するSSH(セキュアシェル)プロトコルとパッケージ化されており、これを活用してファイルの転送をサポートします。

過去20年ほどで、SFTPは、その信頼性とシンプルさを武器に、API の開発も整備も必要なく、組織間での安全なファイルのやり取りやデータ共有の手段として、ますます普及してきました。

そこで本記事では、SFTPを使って安全なファイル転送を実現する方法とその手順をご紹介していきます。

SFTPサーバーの選択

SFTPは、ユーザーがクライアントソフトウェアを使ってサーバーに接続するということで、クライアントサーバーアーキテクチャの良い例です。サーバーは、ユーザーの認証と、適切なリソース(またはファイルやディレクトリ)へのアクセスの認可を担当し、実際のファイルを保存することから、ユーザーはファイルを閲覧、アップロード、ダウンロード、削除できるようになります。

前述の通り、SFTPは SSHとセットになっています。つまり、Linuxサーバーであれば SFTP サーバーとして動作させることができるということです。また、Windows サーバーにインストールやセットアップができる SFTPサーバーサービスもあります。ただし、自分でセットアップする前に、SFTPはクラウド上のサービスとしても利用可能であることを覚えておいてください。

どの方法を取るか決める前に、サーバーやサービスのメンテナンスを誰に任せるか、スケーラビリティや柔軟性、ファイアウォールや暗号化などのセキュリティ、高可用性、事業継続性など、考慮すべき追加要素がいくつかあります。例えば、サービスとしての SFTP を選ぶと、SFTP サーバーの設定や定期的なメンテナンスの手間をかけずに SFTP の特典を受けることができ、サービスに登録するだけで、すぐに利用できます!フルマネージド SFTP を利用するメリットについての詳細は、こちらでぜひご覧ください。

SFTP To Goは、エンドツーエンドのセキュリティ、無限に拡張可能で耐久性のあるストレージ、シンプルなユーザー管理、APIを使った自動化、ファイルシステム変更のWebフック通知など、すべてワンクリックで簡単に設定できるフルマネージドの「サービスとしてのSFTP」です。

最大限のセキュリティと信頼性を備えたSFTP To Go
SFTP To Goは、管理されているSFTP/FTPS/S3をサービスとして提供します - 最高の信頼性、セキュリティ、可用性、1分のセットアップで。あらゆる規模の企業に最適です。
今すぐSFTP To Goをお試しに!

SFTP クライアントの選択

SFTP サーバーを入手したら、次はクライアントの選択をします。コマンドラインツールやプログラミングライブラリに加え、様々なグラフィカルクライアントがあります。このガイドの残りの部分では、コマンドラインを使って SFTP を使う方法を見ていきます。

SFTPを使ったファイルの転送

接続を開始する

最近のOSには、すべてsftpコマンドラインが付いています。SFTP サーバーへの接続を開始するには、コマンドラインに次のように入力します:

$ sftp [user@]host[:port][/path]
(プレースホルダーを実際のユーザー名、サーバー名、オプションで起動するポートやパスに置き換えることを忘れずに。)

サーバーで使用されているセット認証メカニズムに応じて、パスワード入力か、自身を認証する秘密鍵の提供が必要です。

ファイルのアップロード:putコマンド

接続が完了したら、以下の2つの引数を持つputコマンドを使って、ローカルコンピュータからリモートホストにファイルをアップロードすることができます:

  1. ローカルファイル:アップロードするローカルファイルへのパス。ワイルドカード(*)を使うと、1つのコマンドで複数のファイルをアップロードできる。
  2. リモートパス(任意):アップロードされたファイルをリモートサーバーに置くためのターゲットディレクトリ。空のままだと、ファイルは自動的に現在のリモートディレクトリにアップロードされる。

例:

sftp> put inv-jKv72b.json /outgoing-invoices/
Uploading inv-jKv72b.json to /outgoing-invoices/inv-jKv72b.json
inv-jKv72b.json                                                                                                           100% 34596     9.0KB/s   00:00 

配慮を持って共有する

ファイルがすぐにダウンロードできること、lsコマンドでサーバー上のディレクトリの中身を一覧できることを、相手に必ず伝えておきましょう(作業は他の人と一緒にするものですからね。):

sftp> ls -l /outgoing-invoices
-rwxr--r--   1        -        -    21451 Nov 24 08:28 inv-UIf2IS.json
-rwxr--r--   1        -        -    69070 Nov 22 09:12 inv-UPrGAT.json
-rwxr--r--   1        -        -    15714 Jul 14 15:18 inv-v5rg8c.json

ファイルのダウンロード:get コマンド

リモートサーバーからローカルコンピューターへのファイルのダウンロードは、getコマンドを使います。

putと同様、getコマンドには以下の2つの引数があります:

  1. リモートファイル:ダウンロードするリモートファイルへのパス。1つのコマンドで複数のファイルをダウンロードするには、remote-file 引数にワイルドカード(*)を追加する。この引数は必須。
  2. ローカルディレクトリ(任意):ローカルホスト上でダウンロードしたファイルを置くためのターゲットディレクトリ。空のままだと、ファイルは自動的に現在のローカルディレクトリにダウンロードされる。この引数は任意。

例:

sftp> get inv-UIf2IS.json
Fetching /outgoing-invoices/inv-UIf2IS.json to inv-UIf2IS.json
/inv-UIf2IS.json                                                                                                                                          100% 21451     9.1KB/s   00:00   

プロからのヒント:

複数のファイルのダウンロードにはワイルドカードを使いましょう。この例では、名前がinvで始まる jsonファイルを全てダウンロードします:

sftp> get inv*.json

その他の SFTP コマンド

SFTP には、ディレクトリの管理など、他にも便利なコマンドがたくさんあり、こちらからご覧になれます。また、そこではチートシートのダウンロードもできます。

まとめ

まとめると、SFTPは、安全な通信チャネルと、ファイルの管理とアクセスを支援するサーバーを通じて、当事者間でファイルを転送するためのシンプルかつ強力なツールです。SFTPサーバーにうまく接続するのに使えるさまざまなクライアントがあり、ワンクリックでサーバーの立ち上げ、実行、管理ができるということです。

最大限のセキュリティと信頼性を備えたクラウドFTP
SFTP To Goは、管理されているSFTP/FTPS/S3をサービスとして提供します - 最高の信頼性、セキュリティ、可用性、1分のセットアップで。あらゆる規模の企業に最適です。
今すぐSFTP To Goをお試しに!

写真提供:Pavel Herceg - Unsplash