sftp – SSH を利用した安全なファイル転送コマンド

リモートアクセス

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 または exitsftp を終了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 が適しています。
  • サーバ側で sshdsftp サブシステムを有効化している必要があります(/etc/ssh/sshd_config)。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント