大量のデータ交換が頻繁に行われるようになった現在のデータが豊富な世界では、データ転送メカニズムが安全でセキュアであることを保証するのは非常に重要です。データのセキュリティは最も重要であり、選択するデータ転送ツールはデータが暗号化されるものであるべきです。
SFTP(セキュアファイル転送プロトコル)は、ネットワークやデバイスの種類に関係なく、企業がユーザー間やロケーション間でファイルの安全な転送のために活用できるファイル転送メカニズムの 1 つであり、SFTP が提供するデータ暗号化により、機密データは不正アクセスから確実に保護されます。
本記事の主なポイントを以下に5つ挙げましょう:
- SFTP(セキュアファイル転送プロトコル)は、暗号化と認証機能により、データを安全に転送するための強固な選択肢として際立っており、従来の FTP とは違って、不正アクセスからデータを保護する。
- SFTP はセキュリティに優れているだけでなく、さまざまな OS(オペレーティングシステム)との互換性、大容量のファイルハンドリング機能、共同作業のためのリアルタイムアクセスもある。
- SFTP に取り組む前に、信頼できる SFTP クライアントとサーバーなどがある適切なツールを用意し、ユーザー名/パスワードのセットアップと SSH(セキュアシェル)キーの生成などの SFTP 認証情報の確立が必要。
- SFTP 接続は、コマンドラインだけでなく、クライアントのインターフェースからも確立および管理することができ、それによってナビゲーションをしやすくしたりファイルやフォルダのパーミッションの処理を行う。
- SFTP ファイル転送は、実行する複数のコマンドをなどのスクリプトを使って自動化でき、スクリプトは、Windows のタスクスケジューラなどのツールを使って実行するようにスケジュールできる。
本記事では、SFTP のプロセス全体を解説します。この記事で説明する手順は簡単なので、初心者でも経験者でも、この SFTP スキルを磨くのに活用するといいでしょう。
はじめに
SFTP(セキュアファイル転送プロトコル)は、SSH(セキュアシェル)プロトコルを使ってデータ転送を全て暗号化する、安全なファイル転送プロトコルであり、デフォルトではデータを暗号化しない FTP のような従来のファイル転送プロトコルよりも、はるかに安全なオプションとなっています。
SFTP は、財務記録、医療記録、知的財産などの機密データの転送によく使用されており、FTP よりも信頼性が高いため、大容量ファイルの転送にも適しています。
現在のデジタル世界では、やり取りが急激に増加しているため、機密情報をサイバー脅威から保護することが急務となっていますが、SFTP のような安全なファイル転送プロトコルは、暗号化された転送を保証し、不正アクセスや侵害から重要なデータを保護します。また、リモートワーク、連携、コンプライアンス要件において、セキュアなファイル転送はプライバシーの保護だけでなく、連携の改善や、規制基準への対応を実現します。
では、SFTP の特徴と利点を詳しく見ていきましょう。
SFTP の基礎
企業や組織は常に機密データの転送が必要であり、そのデータには、財務記録や健康関連の顧客情報等の機密データなどが含まれます。システム間でのファイル転送の方法は、メールの添付ファイルやクラウドストレージなどさまざまですが、そのような手法が全て安全で効率的とは限りません。このようなデータが保護されなければ、サイバー攻撃に対して脆弱になる可能性がありますが、SFT(セキュアファイル転送)は、安全な方法でネットワーク経由でデータを転送できる方法です。
セキュリティ機能に加えて、SFTP には以下のような利点があります:
- 認証: SFTP は SSH 認証を使っており、それがクライアントとサーバーの両方に強力な認証を提供する。それによって、ファイルへの不正アクセスを防ぐことができる。
- データの完全性: SFTP の暗号化により、転送中のデータの完全性が保証され、それによって、転送中のファイルが確実に破損されなくなる。
- 暗号化: SFTP は、データ伝送を全て保護するために強力な暗号化を使用しており、それによって、ファイルへの不正アクセスを防ぐことができる。
- 互換性: SFTPは、Windows、Linux、macOS など、SSH に対応するあらゆるプラットフォームで使用できる。
- 大容量ファイルの共有:他のファイル共有方式では難しい大容量ファイルの共有も、SFTP なら簡単にでき、動画や音声ファイルなど、さまざまなファイルを効率よく共有できる。
- ストレージの一元化: SFTP を使うと、ファイルを中央の場所に保存できるため、チームメンバーは必要なファイルを見つけたりアクセスしやすくなる。
- リアルタイムでのアクセス: SFTP では、複数のユーザーがリアルタイムでファイルにアクセスできる。そのため、最新の変更を 1 か所で全員が確認できることから、ドキュメントやプロジェクトでの共同作業ができるようになる。
- スケジュール転送: スケジュール転送により、企業は最適なタイミングでファイル転送をプログラムすることができる。それによって、ネットワーク・リソースの使用量が減り、データフローが最適化される。これは渋滞を防ぐだけでなく、重要なタスクが大規模なファイル転送によって影響を受けないことが保証される。
以下で、SFTP を FTP や FTPS のような他の転送プロトコルと比較してみましょう:
アスペクト |
SFTP |
FTP |
FTPS |
安全性 |
高 - 暗号化された転送と認証プロトコルで、転送中のデータ保護が保証される。 |
低 - 本来の暗号化に欠け、認証にはプレーンテキスト(平文)のユーザー名とパスワードが使われる。 |
高 - SSL/TLSによる暗号化オプションがあることで、転送中のデータは保護される。 |
データプライバシー |
高 - 転送中はデータは暗号化されて安全である。 |
低 - 転送されるデータは傍受の影響を受けやすい。 |
高 - プライバシーのための暗号化オプションを提供する。 |
認証 |
公開鍵認証と SSH(セキュアシェル)の使用。 |
ユーザーネームとパスワードの使用 |
SSL/TLS証明書などの様々な認証方法に対応。 |
ポート |
通常は22番ポートを使用 |
21番ポートを使用. |
990 番ポート(暗黙的SSL/TLS)と21番ポート(明示的SSL/TLS)を使用。 |
使いやすさ |
中程度 - SFTP クライアントのセットアップに多少の技術的知識が必要。 |
中程度 - FTP クライアントは技術的な設定が必要。 |
中程度 - SSL/TLS証明書の設定が必要。 |
オートメーション |
自動転送、スケジュールされたタスク、通知に対応。 |
限定的な自動化機能 |
限定的な自動化機能 |
コンプライアンス |
暗号化によりGDPR や HIPAA などの規制に対応。 |
コンプライアンス機能が組み込まれていない。 |
SSL/TLS 暗号化によるコンプライアンスへの対応が可能。 |
ファイルサイズの制限 |
柔軟 - 大容量ファイルの効率的な処理が可能。 |
限定的 - 大容量ファイルに対する制限やパフォーマンスの問題がある場合がある。 |
サーバーの構成によってさまざま。 |
アクセシビリティ |
SFTP のクライアントソフトウェアが必要でることから、特定のデバイスのアクセスが制限される。 |
FTP のクライアントソフトウェアが必要で、デバイスへのアクセスも制限される。 |
デバイスへのアクセスは FTP と同じ制限がある。 |
こんな場合にオススメ |
セキュリティが優先されるところでの機密データの共有。 |
非機密データ転送 |
機密データの転送に暗号化が必要。 |
SFTP の設定:前準備
SFTP(セキュアファイル転送プロトコル)の世界に飛び込む前に、スムーズなセットアッププロセスを確保するのに考慮すべき重要な手順とツールが、以下のようにいくつかあります。
必要なツールとソフトウェア
オススメの SFTP クライアントとサーバー:
安全なファイル転送の促進には、信頼性の高いクライアント・ソフトウェアとサーバー・ソフトウェアをの検討が非常に重要です。
ちなみに、よく使われている SFTP クライアントとサーバーには、WinSCP、FileZilla、Cyberduck、SolarWinds、ExaVault などがあります。
システムの要件:
使っているシステムが SFTP ソフトウェアを実行するための要件を満たしていることを確認し、選択したソフトウェアが必ず OS(Windows、Linux、macOS)に合うようにしてください。
SFTP の認証情報の確立
安全なファイル転送を開始する前に、SFTP の認証情報の設定が必要です。それには、以下のように、安全なアクセスを確保するのに必要な認証メカニズムの作成が含まれます:
ユーザーネーム及びパスワードの設定:
SFTP のクライアント/サーバーを選択したら、強力でユニークなユーザー名とパスワードを作成します。
SSK 鍵の作成:
SSH鍵を使って SFTP を設定するには、SSH 鍵の生成が必要です。それには、以下の手順に従ってください:
- Mac/Windows のマシンでコマンドラインのターミナルを開く。
- 次のコマンドを使って RSA トークンを設定する:ssh-keygen -t rsa
- 上記のコマンドを実行すると、自明な質問がいくつか表示される。そしたらデフォルトの[Enter]を押して次に進む。さらにセキュリティを強化したい場合は、パスフレーズの設定ができる。
- 指定したディレクトリに、「id_rsa」と「id_rsa.pub」という2つの鍵が表示される。「id_rsa」が秘密鍵で、「id_rsa.pub」が公開鍵である。
- SSH 鍵を使ってログインするには、公開鍵の「id_rsa.pub」を SFTP サーバーの「認証済み鍵」に追加する。
SFTP データ転送の謎を解く: ステップごとのチュートリアル
SFTP のセットアップが完了したので、次はいよいよ本格的な作業に入ります。
- サーバーへの接続開始
- SFTP のクライアントインターフェースの使用
-
- 好きな SFTP クライアントソフトウェアを起動する: FileZilla、WinSCP、Cyberduckなど、好みの SFTP クライアントを起動する(チュートリアルでは WinScp を使用)。
- サーバーの詳細を入力する: クライアントインターフェイスでは、接続の詳細を入力するフィールドが表示され、それには、サーバーのホスト名または IP アドレス、ポート番号(SFTP の場合は大体22番)、ユーザー名、認証方法(パスワードまたは秘密鍵)が含まれる。
- 認証する: 指定されたフィールドにユーザー名とパスワードを入力し、[Login(ログイン)]をクリックすると接続される。
- コマンドラインの使用
-
- コマンドラインを使ってサーバーへの接続を開始するには、次のコマンドが使える: sftp username@hostname
- 接続しようとしているアカウントのパスワードを入力するよう促され、パスワードを入力すると、SFTP 接続が開始される。
ディレクトリの移動
SFTP サーバーに接続したら、次はディレクトリをナビゲートする番です。ターミナルで同じことを行うのに使用できる一般的なコマンドをいくつか見ていきましょう。
-
ディレクトリをナビゲートするためのよく使われるコマンド:
-
Is:現在のリモート・ディレクトリのファイルとディレクトリを一覧表示する。
-
cd directory_name:リモートディレクトリを変更する。
-
pwd:現在のリモートディレクトリのパスを表示する。
-
mkdir new_directory:現在のリモートディレクトリに新しいディレクトリを作成する。
- rmdir directory_to_remove:現在のリモートディレクトリから空のディレクトリを削除する
-
Is:現在のリモート・ディレクトリのファイルとディレクトリを一覧表示する。
SFTP では、ファイルやフォルダのパーミッションの管理ができることから、適切なユーザーが適切なアクセス権を持つようにすることもできます。なお、パーミッションは、多くの場合、読み取り(r)、書き込み(w)、実行(x)権限の組み合わせで表されます。
-
ファイルやフォルダのパーミッションを扱う:
- chmod <mode> <file>:chmod コマンドは、指定したファイルのパーミッションを変更する。[mode(モード)]と[file(ファイル)]という2つの引数を取り、modeは3つの8進数の組み合わせで、それぞれが所有者、グループ、その他のパーミッションを表す。以下は、パーミッションの8進数値を示した表である:
パーミッション |
8進数値 |
読み取り |
4 |
書き取り |
2 |
実行 |
1 |
例えば、以下のコマンドは、ファイル file.txt のパーミッションの変更、所有者へのファイルの読み取りと書き込みの許可、その他全員へのファイルの読み取りの許可をする: chmod 644 file.txt
モードの6は所有者のパーミッションを表し、読み取り(4)と書き込み(2)を許可する。また、モードの44は、グループとその他の人のパーミッションを表す:読み取り(4)および書き込み(4)
-
- chown <username> <file>:chown コマンドは、指定したファイルの所有者を変更し、[ユーザー名]と[ファイル]の2つの引数を取る。chown username file.txt コマンドは、ファイルの所有者をユーザー名に変更する。
- chgrp <group> <file>:chgrp コマンドは、指定したファイルのグループを変更し、[グループ名]と[ファイル]の2つの引数を取る。chgrp groupname file.txt のコマンドは、file.txt のグループをグループ 'groupname' に変更する。
- ファイル転送
ここまでで、SFTP 接続を確立し、ローカルとリモートのディレクトリを操作できるようになりました。では、ローカルマシンからリモートマシンへファイルを転送する方法を見てみましょう。
-
サーバーへのファイルのアップロード
- SFTP 接続が確立したら、転送したいファイルがあるローカルディレクトリに移動する。
- ファイルのアップロードには put コマンドを使う。put コマンドの構文は次のとおり: put <local_file> <remote_file>
- ファイルがリモートディレクトリにコピーされたかどうかは、「ls」コマンドで確認できる。
-
サーバーからファイルをダウンロードする
ファイルをダウンロードするには get コマンドを使う。get コマンドの構文は以下の通り: get <remote_file> <local_file
WinSCP や FileZilla のようなツールを使っている場合、UI(ユーザーインターフェース)を活用して SFTP 接続を確立し、UI からファイルをアップロード/ダウンロードするといいでしょう。
- よくある問題のトラブルシューティング
SFTP でファイルを転送していると、接続エラー、ファイル転送エラー、パーミッションエラーなどの問題に直面することがよくあります。それぞれについて、考えられる解決策を見ていきましょう。
-
接続の失敗
- ホスト名またはIPアドレスが正しくない: 接続を確立できない場合は、ホスト名と IP アドレスが正しいかどうかを確認する。
- ユーザー名またはパスワードが間違っている:使っているユーザー名とパスワードが正しいことを確認する。
- ポートの設定: ポート番号が正しいことを確認する。デフォルトは22番。
- ファイアウォールとネットワークの問題: ネットワークに問題があるか、ファイアウォールが SFTP 接続をブロックしていないか確認する。
- 使っているツールがアップデートされていることを確認する。
- それでも問題が解決しない場合は、別のツールで接続してみる。
- 別のコンピュータまたはネットワークから接続してみる。
- ファイル転送およびパーミッションのエラー
- ファイルのアクセス許可: 転送しようとするファイルにアクセスするための正しいパーミッションがあることを確認する。
- 破損ファイル:送受信しようとしているファイルが破損していないか確認する。
- それでも問題が解決しない場合は、サイズの小さいファイルを転送してみる。
- パーミッションの問題を解決するために、ファイルを別のディレクトリに移動してみる。
SFTP スキルの向上: さらなるヒント
ファイル転送の自動化
ファイル転送が頻繁に繰り返される場合、企業や個人は SFTP が対応する自動化機能を活用することで、時間と労力の節約になります。毎回手動でファイルのダウンロードやアップロードをする代わりに、必要なときに必要なコマンドを自動実行することができますからね。
そのようなコマンドの実行を自動化する方法のひとつに、スクリプトの使用というやり方があります。スクリプトには基本的に、通常手動で実行するコマンドのセットが含まれており、各コマンドを1つずつ実行する代わりに、スクリプトファイルを使えば、それらをまとめて実行することができます。
さまざまな SFTP ソフトウェアがコマンドライン接続に対応していますが、ここでは WinSCP を考えてみましょう。
コマンドラインから WinSCP を実行するには、コマンドラインを開き、WinSCP がインストールされているディレクトリに変更します(C:˶Program Files (x86)˶WinSCP が一般的)。さらに接続を確立するには、WinSCP のドキュメントを参照するといいでしょう。
スクリプトの作成:
リモートサーバーからファイルをダウンロードして、それを再びアップロードする簡単なスクリプトを作ってみましょう。
open sftp://user1:password@example.com/ -hostkey="ssh-rsa 2048 xxxxx..."
cd /home/user1
get examplefile.txt d:\
close
open sftp://user2:password@example.com/
cd /home/user2
put d:\examplefile.txt
close
exit
このスクリプトは、アカウント 'user1'で'example.com' のサーバーに接続して、 ファイルをダウンロードしてセッションを閉じます。そしてその後、アカウント 'user2' で再び接続を開き、ファイルをアップロードしてセッションを閉じます。
スクリプトの実行
作成したスクリプトを「myscript.txt」として保存すると、次のコマンドで実行できるようになります: winscp.com /ini=nul /log=myscript.log /script=myscript.txt
ここでは、/script コマンドは myscript.txt を winscp.exe に渡し、/log=myscript.log はセッション・ロギングを有効にしています。
上記のコマンドは .bat ファイルに埋め込むことができます。
タスクの実行をさらにスケジュールするには、Windows のタスクスケジューラを利用するといいでしょう。
以下はその手順です:
検索バーで「タスクスケジューラ」と検索します。
- [Action(アクション)]から[Create Basic Task(基本タスクの作成)]へと進む。
- タスクに名前をつけて次に進む。
- タスクを実行する時を選択し、[Next(次へ)]をクリックする。
- [Start a program(プログラムを開始する)]を選択し、[Next(次へ)]をクリックする。
- WinScp.exe ファイルをブラウズする。
- [Add arguments(引数の追加)]に、上記のように希望の WinSCP コマンドラインパラメータを追加する。
- タスクを確認し、[Finish(終了)]をクリックする。
さらなるセキュリティ対策の実施
さらなるセキュリティ強化のために、2FA(二要素認証)および IPホワイトリストを設定して、許可されたユーザーだけが接続にアクセスできるようにするといいでしょう。
さまざまな SFTP ツールで、インターフェースを通じて 2FA と IPホワイトリストを設定できますが、Linux 環境を使用している場合は、以下の手順に従ってください:
2FA(二要素認証)
1. 2FA を有効にするには、Google Authenticator のパッケージを使い、以下のコマンドを実行してパッケージをインストールする:
-
sudo apt update
-
sudo apt upgrade
- sudo apt install libpam-google-authenticator
2. 完了したら、「sshd_config」ファイルを少し変更する必要がある。
- 次のコマンドを使用してファイルを開く: sudo nano /etc/ssh/sshd_config
- 以下の行を見つけてコメントアウトする: # PasswordAuthentication yes
- 以下の行のコメントを外す: ChallengeResponseAuthentication yes
- 以下の行で UsePAM を有効にする: UsePAM yes
3. 次に、SFTP のユーザーのユーザー グループが作成が必要であり、それを行うには、次のコマンドを使うことができる: sudo groupadd sftp users
4. sshd_config のファイルの末尾にある Subsystem sftp /usr/lib/openssh/sftp-server の行を Subsystem sftp Internal-sftp に置き換える。
5. 最後に、以下の行を入力する:
- Match Group sftpusers
- ForceCommand internal-sftp
- ChrootDirectory /var/sftp/%u
- PermitTunnel no
- AllowAgentForwarding no
- AllowTcpForwarding no
- X11Forwarding no
ホワイトリストIP の設定
2FA の設定ができたので、特定の IP が2FA なしでサーバーにアクセスできるようにする IP のリストがあるコンフィグ(設定)を作成しましょう。
- 次のコマンドを使って、access.conf のファイルを作成する: sudo nano /etc/security/access-local.conf
- それに以下の内容を追加する:
-
#2FA Disabled user: IPs
-
#Enable 2FA for all others
- -: ALL: ALL
これが完了すると、上で説明したファイル構造と権限を使って、2要素が有効化されたユーザーと IP ホワイトリストに登録されたユーザーを作成できるようになります。
まとめ
データがイノベーションと連携の原動力となる世界では、安全で信頼性の高いデータ転送の重要性が日々高まっています。SSH ファイル転送プロトコルには、セキュリティだけでなく、豊富な利点があることから、組織やデベロッパーに好まれる選択肢となっており、その強固な認証方法と暗号化によって、データはプライベートに保たれ、サイバー脅威から保護されます。
また、さまざまなプラットフォームにわたる SFTP の互換性、大容量ファイル共有のサポート、リアルタイム アクセス、および自動化機能により、SFTP の多用途性や使いやすさが強化され、連携の効率化、生産性の向上、GDPR や HIPAA などの規制基準への準拠が実現します。
SFTP をマスターするには、継続的な学習と実践が鍵となり、データ転送が問題になる場合に SFTP を学習することは、個人または組織の一員として有益です。
Integrate.io が SFTP でお手伝いできること
Integrate.io は、豊富な機能を提供するクラウドベースのコード不要の ETL ソリューションであり、SFTPなどコネクタが100以上内蔵されていることによって、サッと簡単な上に安全なデータ統合が実現します。また、ドラッグ&ドロップの UI(ユーザーインターフェース)により、技術者でないユーザーでもクラウド機能を活用することができます。
SFTP と Integrate.io の活用は、ビジネスにとって最高の組み合わせです。早速ビジネス要件について当社のデータ専門家チームにお問い合わせいただくか、14日間の無料トライアルにサインアップして、その仕組みをぜひご体験ください。
Q&A
Q. FTP、FTPS、SFTP の違いは何ですか?
A. FTP は暗号化なしでデータを転送し、FTPS は SSL/TLS を使って暗号化を追加し、SFTP は SSH暗号化および認証でデータを保護します。
Q. SFTP は転送中のデータセキュリティをどのように確保するのでしょうか?
A. SFTP は、強力な暗号化と、ハッシュ暗号化や SSH のような安全な認証メカニズムによって、転送中のデータセキュリティを保証します。
Q. SFTP はどの OS でも使えますか?
A. はい、SFTP は Windows、Linux、macOS など、様々なOS と互換性があります。
Q. なぜ SFTP 接続がうまくいかないのでしょうか?
A. SFTP 接続の失敗は、認証情報の誤り、ファイアウォールの問題、ネットワークの問題によって発生する可能性があります。
Q. SFTP の転送速度はどのように上げることができますか?
A. SFTP の転送速度は、ネットワークの最適化、圧縮の使用、または SFTP のクライアント/サーバーのアップグレードによって改善できます。
Q. SFTP 転送にファイルサイズの制限はありますか?
A. SFTP には、厳密なファイルサイズの制限は大体ありませんが、サーバーの設定によって制限が課される場合があります。
Q. SFTP ファイル転送の自動化はどのようにするのですか?
A. スクリプトや Windows のタスクスケジューラのようなスケジューリングツールを使って、SFTP ファイル転送を自動化できます。
Q. 知っておくべき一般的な SFTP コマンドは何ですか?
A. 一般的な SFTP コマンドには、ls、cd、pwd、mkdir、rmdir、chmod、chown、chgrp があります。
Q. SFTP のパーミッションはどのように管理するのですか?
A. SFTP のパーミッションは、chmod、chown、chgrp などのコマンドを使って管理され、適切なアクセス制御が保証されます。