【安全】SFTPコマンドの使い方|セキュアなファイル転送を実現

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年4月)

✔このような方へ向けて書かれた記事となります

「SFTPって何だろうか?」

「FTPとどちらを使えば良いのか知りたい」

「SFTPを使った実例を教えて」

✔当記事を通じてお伝えすること

  • SFTPの基本
  • SFTPの使い方
  • SFTPの実例

当記事では、SFTPコマンドの基本はもちろん、その使い方や実例まで、初心者にもわかりやすく、丁寧に解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

SFTPコマンドを使うのに必要な基礎知識

SFTPコマンドを使うために、最低限必要な知識を見ていきましょう。

理解したうえであれば、より早くそのやり方を吸収できます。

  • SFTPコマンドとは?
  • SFTPとFTPの違い
  • SFTPのセキュリティ特徴

SFTPコマンドとは?

SFTP(Secure File Transfer Protocol)コマンドは、インターネットを通じてファイルを安全に転送するためのプロトコルです。

SFTPはSSH(Secure Shell)上で動作し、通信内容を暗号化することで、データの漏洩や改ざんを防ぎます。

転送に使うデフォルトのポート番号は22で、SSH用のポートを使用します。

SFTPとFTPの違い

SFTPとFTP(File Transfer Protocol)は、どちらもファイル転送のためのプロトコルですが、セキュリティ面で大きな違いがあります。

FTPは通信内容が暗号化されていないので、データが盗聴されるリスクがあるのです。

対してSFTPは、SSHを利用して暗号化された通信をおこなうため、より安全にファイルを転送できまfす。

FTPコマンドについては詳しくこちらで解説しています。

FTPコマンドの基本|ツールの使い方と合わせてコマンドも覚えよう
FTPコマンドについて詳しく知りたいですか?当記事では、FTPコマンドの使い方や具体的な実例まで丁寧に解説しています。FTPで有名なツールについてもご紹介しているので、どちらでもお好きなやり方が選べます。初心者の方は必見です。

SFTPのセキュリティ特徴

SFTPは、以下のようなセキュリティ面での特徴を持っています。

  • 通信内容の暗号化:データ転送時の暗号化で、第三者によるデータ盗聴を防げる
  • 認証方式の選択:パスワード認証や公開鍵認証など、複数の認証方法を選択できる
  • データ完全性の保証:転送中のデータが改ざんされていないことを確認できる。

SFTPコマンドのインストール

SFTPコマンドのインストール方法はこちら。

OS別に異なるので、インストールがまだの方は、適した箇所をご覧ください。

  • Windowsの場合
  • macOSの場合
  • Linuxの場合

Windowsの場合

Windowsでは、Windows 10以降であれば、OpenSSHクライアントをインストールすることでSFTPコマンドが利用できます。

設定アプリの「アプリ」→「オプション機能」でOpenSSHクライアントを選択して、インストールしてください。

macOSの場合

macOSでは、デフォルトでSFTPコマンドが利用できます。

ターミナルを開いて、直接SFTPコマンドを実行しましょう。

Linuxの場合

Linuxでは、ほとんどのディストリビューションでデフォルトでSFTPコマンドがインストールされています。

もしインストールされていない場合は、パッケージマネージャーを利用してOpenSSHをインストールしてください。

インストールできているかは以下のようにして調べましょう。

$ dpkg -l | grep ssh
ii  libssh-4:amd64                                0.9.3-2ubuntu2.2                                  amd64        tiny C SSH library (OpenSSL flavor)
ii  libssh-gcrypt-4:amd64                         0.9.3-2ubuntu2.2                                  amd64        tiny C SSH library (gcrypt flavor)
ii  libssh2-1:amd64                               1.8.0-2.1build1                                   amd64        SSH2 client-side library
ii  openssh-client                                1:8.2p1-4ubuntu0.5                                amd64        secure shell (SSH) client, for secure access to remote machines
ii  python3-paramiko                              2.6.0-2ubuntu0.1                                  all          Make ssh v2 connections (Python 3)
ii  sshfs                                         3.6.0+repack+really2.10-0ubuntu1                  amd64        filesystem client based on SSH File Transfer Protocol

SFTPコマンドの基本構文と操作

SFTPコマンドの基本構文と操作について、詳しく見ていきます。

どのようにして使っているのかの事例を通じて、理解していきましょう。

  • 接続する
  • 切断する
  • ディレクトリを移動する
  • ディレクトリリストを表示する
  • ファイルやディレクトリをアップロードする
  • ファイルやディレクトリをダウンロードする
  • ファイルやディレクトリをリネームする
  • ファイルやディレクトリを削除する
  • ファイル検索の方法

1.接続する

sftp ユーザー名@ホスト名

$ sftp hnish@xxx.com #xxx.comにはSSH接続が可能なドメインを入力
Connected to xxx.com
sftp> 

2. 切断する

bye もしくは exit

3. ディレクトリを移動する

cd ディレクトリ名

sftp> cd /var/www/html

4. ディレクトリリストを表示する

sftp> ls

5. ファイルやディレクトリをアップロードする

put ローカルファイル [リモートファイル]

put index.html

ファイルをアップロードしたいディレクトリに移動してからおこないましょう。

6. ファイルやディレクトリをダウンロードする

get リモートファイル [ローカルファイル]

get example.txt

7. ファイルやディレクトリをリネームする

rename 旧ファイル名 新ファイル名

rename old.txt new.txt

8. ファイルやディレクトリを削除する

rm ファイル名

rm test.txt

rmdir ディレクトリ名

rmdir example_directory

9. ファイル検索の方法

find ディレクトリ名 -name “検索条件”

find /var/www/html -name "*.php"

SFTPコマンドのオプション一覧

SFTPコマンドのオプションを一覧でまとめました。

使用を考えている方は目を通しましょう。

オプション名概要実例
-P ポート番号接続先のポート番号を指定します。sftp -P 2222 user@example.com
-b バッチファイルバッチファイルを指定して一連のコマンドを実行します。sftp -b batchfile.txt user@example.com
-C転送時に圧縮を有効にします。sftp -C user@example.com
-pファイルのアクセス時刻や修正時刻を保持します。sftp -p user@example.com
-qクライアントからの出力を抑制します。sftp -q user@example.com
-r再帰的にディレクトリをダウンロードまたはアップロードします。sftp -r user@example.com
-v詳細なデバッグ情報を出力します。sftp -v user@example.com
-i 秘密鍵ファイル秘密鍵ファイルを指定して公開鍵認証を使用します。sftp -i ~/.ssh/id_rsa user@example.com
-o オプションOpenSSHのオプションを指定します。sftp -o "StrictHostKeyChecking=no" user@example.com

SFTPコマンドの応用操作

SFTPコマンドで応用した操作についても見ていきます。

これまでの内容を理解できているなら、次のステップへ進んでください。

  • ファイルの権限を変更する
  • 接続先の情報を保存しておく
  • 公開鍵認証を使用する
  • ファイル転送の自動化
  • バッチ処理の実行
  • エラーハンドリング

ファイルの権限を変更する

SFTPでファイルを転送したら、権限変更の必要が出てくる場合があります。

以下のコマンドを覚えておきましょう。

chmod 権限設定 ファイル名

chmod 755 script.sh

公開鍵認証を使用する

公開鍵認証を使用することで、より安全にSFTP接続をおこなえます。

なぜならパスワード流出の危険がなく、より安全な暗号化の方法が取れるからです。

ローカルマシンでSSHキーペアを生成し、公開鍵をリモートサーバーの適切なディレクトリに配置します。

その後、SFTPクライアントで秘密鍵を指定して接続しましょう。

以下の記事にやり方を載せています。

ファイル転送の自動化

スクリプトやバッチファイルを使用して、SFTPコマンドを自動化できます。

例えば、定期的にファイルをアップロードする場合、CronやTask Schedulerを使用して自動化を設定しましょう。

バッチ処理の実行

SFTPコマンドでバッチファイルを使用すると、一連のコマンドを一度に実行できます。

例えば以下のようなバッチファイルを作成すると、ディレクトリ移動やダウンロード、アップロードが自動化できるのです。

cd /remote/directory
lcd /local/directory
get file1.txt
get file2.txt
put file3.txt
put file4.txt

実行するには以下のコマンドです。

sftp -b batchfile.txt user@example.com

エラーハンドリング

SFTPコマンドを使用する際にエラーが発生した場合、エラーメッセージを確認し、問題を特定して解決してください。

自動化やバッチ処理の際には、エラーハンドリングを適切におこなうことが重要です。

SFTPクライアントの選択

SFTPクライアントの選択について、いくつかポイントを見ていきましょう。

  • おすすめのSFTPクライアント
  • 各クライアントの特徴

おすすめのSFTPクライアント

おすすめできる任期のSFTPクライアントは以下のとおり。

  • FileZilla:無料でオープンソースのクライアントであり、Windows、macOS、Linuxで利用できます。使いやすいインターフェースと機能が豊富
  • WinSCP: Windows専用のSFTPクライアントで、無料で使えます。コマンドラインからの操作も可能で、自動化にも対応
  • Cyberduck: WindowsとmacOSで利用できる無料のSFTPクライアントで。直感的な操作と多機能さが特徴

クライアントの特徴

各クライアントの特徴をもう少し詳しく見てみましょう。

ついている機能は以下のとおりです。

  • FileZilla: ドラッグ&ドロップでのファイル転送、転送速度制限、リモートファイル編集などの機能
  • WinSCP: マスターパスワード保護、リモートディレクトリの同期、統合テキストエディタなどが利用
  • Cyberduck: ブックマーク機能、クラウドストレージとの連携、ファイルの圧縮・解凍機能などが特徴

トラブルシューティング

SFTPを扱ううえでの、トラブルとその解決策を見ていきましょう。

ひとつずつご覧ください。

  • 接続ができない
  • ファイルのアップロードやダウンロードができない
  • ファイルの権限が変更できない
  • よくあるエラーと対処法
  • デバッグ方法

接続ができない

考えられる原因

  • ネットワーク接続の問題
  • ポート番号が間違っている
  • ユーザー名やパスワードが間違っている
  • 接続先サーバーのSFTPサービスが停止している

対処法

  • ネットワーク接続を確認し、問題がないことを確認してください。
  • ポート番号が正しいか確認してください。
  • ユーザー名やパスワードが正しいか確認してください。
  • 接続先サーバーの管理者に連絡し、SFTPサービスの状態を確認してもらってください。

ファイルのアップロードやダウンロードができない

考えられる原因

  • ディスク容量不足
  • ファイルやディレクトリのアクセス権限が不足している
  • ファイルパスが間違っている

対処法

  • ディスク容量を確認し、不足している場合は空き容量を増やしてください。
  • ファイルやディレクトリのアクセス権限を確認し、必要であれば変更してください。
  • ファイルパスが正しいか確認してください。

ファイルの権限が変更できない

考えられる原因

  • 権限変更操作に必要な権限がユーザーに与えられていない
  • ファイルやディレクトリのオーナーやグループが適切でない

対処法

  • SFTP接続時のユーザー権限が、権限変更を許可していることを確認してください。
  • ファイルやディレクトリのオーナーやグループが適切であることを確認してください。

よくあるエラーと対処法

  • “Permission denied”: 権限不足によるエラーなので、ファイルやディレクトリのアクセス権限を確認
  • “No such file or directory”: ファイルやディレクトリが存在しない場合のエラーなので、正しいファイルパスを指定しているか確認
  • “Connection timed out”: 接続がタイムアウトした場合のエラーで、ネットワーク状況を確認し、必要に応じてタイムアウト時間を延ばす

まとめ

当記事の内容をまとめます。

  • セキュリティを強化するために、公開鍵認証を使用
  • よく使う接続先はブックマークやプロファイルに保存しておくと便利
  • ファイル転送を自動化したい場合は、スクリプトやバッチファイルを活用

SFTPはクライアントツールと並行しながら使うと効果的です。

もし自動化などをしたいなら、コマンドを上手く活用しましょう。

タイトルとURLをコピーしました