sftp コマンドは、SSH を利用してリモートサーバとファイルをやり取りできる 対話型のファイル転送ツール です。
従来の ftp と似た操作感ですが、通信が暗号化されているためセキュアに利用できます。
構文(Syntax)
sftp [オプション] [USER@]HOST
sftp [オプション] -b BATCH_FILE [USER@]HOST
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-P PORT | 接続ポートを指定(デフォルト:22) | sftp -P 2222 user@host |
-i KEY | 秘密鍵ファイルを指定 | sftp -i ~/.ssh/id_rsa user@host |
-b FILE | バッチモード(スクリプトで自動実行) | sftp -b batch.txt user@host |
-C | 圧縮を有効化 | sftp -C user@host |
-q | 冗長なメッセージを表示しない | sftp -q user@host |
-v | デバッグ情報を表示 | sftp -v user@host |
主な対話モードのコマンド
| コマンド | 説明 | 使用例 |
|---|---|---|
ls | リモートディレクトリの一覧表示 | sftp> ls |
cd DIR | リモートディレクトリを移動 | sftp> cd /var/www |
pwd | リモート作業ディレクトリを表示 | sftp> pwd |
lpwd | ローカル作業ディレクトリを表示 | sftp> lpwd |
get FILE | リモートファイルを取得 | sftp> get remote.txt |
put FILE | ローカルファイルをアップロード | sftp> put local.txt |
mget FILES | 複数ファイルを取得 | sftp> mget *.log |
mput FILES | 複数ファイルをアップロード | sftp> mput *.txt |
rm FILE | リモートファイルを削除 | sftp> rm old.txt |
mkdir DIR | リモートディレクトリを作成 | sftp> mkdir backup |
bye または exit | sftp を終了 | sftp> bye |
実行例
リモートサーバへ接続
sftp user@example.com
出力例:
Connected to example.com.
sftp>
ファイルをリモートから取得
sftp> get remote.txt
Fetching /home/user/remote.txt to remote.txt
ファイルをリモートへアップロード
sftp> put local.txt
Uploading local.txt to /home/user/local.txt
複数ファイルをまとめて取得
sftp> mget *.log
バッチモードで自動実行
echo "get remote.txt" > batch.txt
sftp -b batch.txt user@example.com
エラー例(認証失敗)
sftp user@wronghost
出力例:
ssh: connect to host wronghost port 22: Connection refused
Connection closed
関連コマンド
ssh: リモート接続scp: SSH を利用した一括ファイル転送rsync: 差分同期に優れた転送ツール(SSH利用可能)ftp: 暗号化なしの古いファイル転送コマンド(非推奨)
備考
sftpは SSH と同じポート(デフォルト 22)を利用するため、ファイアウォール設定が簡単です。scpは一括コピーに便利ですが、対話操作やバッチ処理にはsftpが適しています。- サーバ側で
sshdがsftpサブシステムを有効化している必要があります(/etc/ssh/sshd_config)。
参考
- manページ: man7.org sftp(1)
- OpenSSH: https://www.openssh.com/

コメント