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 のコマンドは FTP のコマンドと同じですか?

いいえ。SFTP は SSH の上で動く別のプロトコルで、コマンド体系は似ていますが同一ではありません。get、put、cd、ls、bye といった中核のコマンドはどちらでも使えますが、SFTP には chmod、ln、df といった Unix 風のコマンドが加わり、転送の再開には reget/reput を使い、ascii/binary のモードはありません。転送は常にバイナリです。従来の FTP クライアントにある mdelete、hash、literal といったコマンドは sftp には存在しません。

SFTP でフォルダーごとダウンロード・アップロードするには?

-r(再帰)オプションを使います。get -r projectfolder でディレクトリツリーをまるごとダウンロードでき、put -r projectfolder でアップロードできます。宛先のディレクトリに、ぶつかるファイルが先にあってはいけません。セッションを sftp -r user@host で開始して、転送を既定で再帰的にすることもできます。

途中で切れた SFTP の転送を再開するには?

ダウンロードの再開には reget ファイル名 を、アップロードの再開には reput ファイル名 を使います。受け取り側に途中までのファイルが残っている必要があり、sftp は最初からやり直すのではなく、止まったところから続けます。

Windows に SFTP のコマンドは標準で入っていますか?

入っています。Windows 10(1809 以降)と Windows 11 には OpenSSH クライアントが同梱されているので、コマンドプロンプトや PowerShell からそのまま sftp user@host を実行できます。追加のソフトウェアは要りません。このページに挙げたコマンドは、Windows、macOS、Linux のいずれでも同じように動きます。

SFTP の転送をスクリプト化・自動化するには?

1 行に 1 コマンドを書いたテキストファイルを用意し、sftp -b batch.txt user@host として実行します。バッチモードは対話によらない認証を必要とするため、実際には先に SSH 鍵認証を設定しておくことになります。定期的な処理(決まった時刻のアップロード、バックアップ、同期)であれば、スケジューラを内蔵したクライアントを使うほうが、スクリプトとタスクスケジューラの登録を保守せずに済みます。

画面で操作する SFTP クライアントがよいですか

FTPie は現代的な Windows 向け SFTP クライアント です。SSH 鍵による認証、ホスト鍵の検証、ドラッグ&ドロップでの再帰的な転送、そして組み込みのスケジューラを備えています。サーバー接続 3 つまでは無料です。

FTPie を無料でダウンロード