サイトアイコン ITC Media

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

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

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

「SFTPって何だろうか?」

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

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

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

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

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

筆者プロフィール

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

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

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

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

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

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

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

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

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

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

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

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

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の場合

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を扱ううえでの、トラブルとその解決策を見ていきましょう。

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

接続ができない

考えられる原因

対処法

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

考えられる原因

対処法

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

考えられる原因

対処法

よくあるエラーと対処法

まとめ

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

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

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

モバイルバージョンを終了