SFTP コマンド一覧
OpenSSH の sftp クライアントの全コマンドを構文と用例つきで。接続、ディレクトリの移動、転送、パーミッション、バッチスクリプトまで。OpenSSH クライアントを標準搭載する Windows 10/11、macOS、Linuxのいずれでも、同じように動きます。
2026 年 7 月更新
サーバーへ接続する
SFTP は SSH(既定ではポート 22)の上で動くので、認証とホスト鍵の確認は sshとまったく同じです。以下のオプションは、セッションが始まる 前 にコマンドラインで指定します:
| コマンド/オプション | はたらき | 例 |
|---|---|---|
sftp user@host | 対話型の SFTP セッションを開始します。 | sftp alice@example.com |
-P port | 標準以外のポートへ接続します(ssh とは違い、大文字の P です)。 | sftp -P 2222 alice@example.com |
-i keyfile | 指定した SSH 秘密鍵で認証します。 | sftp -i ~/.ssh/deploy_key alice@example.com |
-b file | バッチモード。ファイルに書いたコマンドを対話なしで実行します。 | sftp -b upload.txt alice@example.com |
-r | セッション全体で get/put を再帰的にします。 | sftp -r alice@example.com |
sftp user@host:path | ファイルを直接取得して終了します(対話セッションを開きません)。 | sftp alice@example.com:/logs/app.log |
接続を拒否される、あるいは応答が返らない場合は、まずこちらでサーバーを確認してください: SFTP 接続テスター。受け付けている認証方式はこちらで調べられます: SFTP 認証方式チェッカー.
ダウンロードとアップロード
| コマンド | はたらき | 例 |
|---|---|---|
get | サーバーからファイルをダウンロードします。 | get report.pdf |
get -r | ディレクトリを中身ごとダウンロードします。 | get -r backups |
put | ローカルのファイルをサーバーへアップロードします。 | put site.zip |
put -r | ディレクトリを再帰的にアップロードします。 | put -r dist |
mget | パターンに一致する複数のファイルをダウンロードします。 | mget *.log |
mput | パターンに一致する複数のファイルをアップロードします。 | mput *.html |
reget | 途中まで落としたファイルのダウンロードを再開します。 | reget big-backup.tar |
reput | 途中まで上げたファイルのアップロードを再開します。 | reput big-backup.tar |
progress | 転送の進捗表示をオン・オフします。 | progress |
SFTP には ascii/binary の切り替えがありません。常にバイト単位でそのまま転送するので、改行コードの変換でファイルが壊れることはありません。
バッチモードとスクリプト
無人で転送するには、コマンドを 1 行ずつ書いたファイルを用意し、sftp をバッチモードで実行します。バッチモードは最初のエラーで中断し、鍵による認証を必要とします。パスワードを尋ねることができないためです:
# upload.txt cd /var/www/site lcd C:\Projects\site\dist put -r . bye C:\> sftp -b upload.txt -i C:\keys\deploy_key deploy@example.com
これで動きますが、定期的な処理を 1 つ増やすたびに、スクリプトと鍵とタスクスケジューラの登録を保守することになります。「毎晩 2 時にこのフォルダーをアップロードする」を画面上で定義したい(再試行も、通知も、履歴もついたかたちで)のなら、それがまさに FTPie のスケジュール転送 です。
SFTP コマンドについて
SFTP(SSH File Transfer Protocol)は「SSH 上の FTP」ではありません。SSH の接続層の上に築かれた別のプロトコルで、IETF の draft-ietf-secsh-filexfer の一連の文書で定義されています。Windows、macOS、Linux の sftp コマンドは OpenSSH によるクライアント実装であり、このページが記載しているのはそのコマンド体系です。すべてが SSH の内側で動くため、開いているポート 1 つ(22 番)が認証もコマンドも暗号化されたデータも運びます。パッシブモード用のポート範囲も、TLS 証明書の設定も要りません。
従来の FTP から来た方へ。コマンド体系は重なりつつも重要な点で異なります。ftp.exe と RFC 959 のプロトコルコマンドについては、こちらをご覧ください: FTP コマンドリファレンス 。
よくある質問
いいえ。SFTP は SSH の上で動く別のプロトコルで、コマンド体系は似ていますが同一ではありません。get、put、cd、ls、bye といった中核のコマンドはどちらでも使えますが、SFTP には chmod、ln、df といった Unix 風のコマンドが加わり、転送の再開には reget/reput を使い、ascii/binary のモードはありません。転送は常にバイナリです。従来の FTP クライアントにある mdelete、hash、literal といったコマンドは sftp には存在しません。
-r(再帰)オプションを使います。get -r projectfolder でディレクトリツリーをまるごとダウンロードでき、put -r projectfolder でアップロードできます。宛先のディレクトリに、ぶつかるファイルが先にあってはいけません。セッションを sftp -r user@host で開始して、転送を既定で再帰的にすることもできます。
ダウンロードの再開には reget ファイル名 を、アップロードの再開には reput ファイル名 を使います。受け取り側に途中までのファイルが残っている必要があり、sftp は最初からやり直すのではなく、止まったところから続けます。
入っています。Windows 10(1809 以降)と Windows 11 には OpenSSH クライアントが同梱されているので、コマンドプロンプトや PowerShell からそのまま sftp user@host を実行できます。追加のソフトウェアは要りません。このページに挙げたコマンドは、Windows、macOS、Linux のいずれでも同じように動きます。
1 行に 1 コマンドを書いたテキストファイルを用意し、sftp -b batch.txt user@host として実行します。バッチモードは対話によらない認証を必要とするため、実際には先に SSH 鍵認証を設定しておくことになります。定期的な処理(決まった時刻のアップロード、バックアップ、同期)であれば、スケジューラを内蔵したクライアントを使うほうが、スクリプトとタスクスケジューラの登録を保守せずに済みます。
画面で操作する SFTP クライアントがよいですか
FTPie は現代的な Windows 向け SFTP クライアント です。SSH 鍵による認証、ホスト鍵の検証、ドラッグ&ドロップでの再帰的な転送、そして組み込みのスケジューラを備えています。サーバー接続 3 つまでは無料です。
FTPie を無料でダウンロード