Linux sftp コマンド
sftp とは?
SFTP(SSH File Transfer Protocol)は安全なファイル転送プロトコルで、SSH(Secure Shell)の暗号化チャネルを通じてファイルを転送します。従来の FTP とは異なり、SFTP はより高い安全性を提供し、転送されるすべてのデータは暗号化されます。
SFTP と FTP の違い
| 特性 | SFTP | FTP |
|---|---|---|
| 安全性 | 暗号化転送 | 平文転送 |
| ポート | 22(SSH ポート) | 21(制御ポート)+20(データポート) |
| プロトコル | SSH ベース | 独立したプロトコル |
| ファイアウォールの親和性 | 1つのポートを開放するだけでよい | 複数のポートを開放する必要がある |
sftp コマンドの基本構文
sftp [选项] [用户名@]主机名[:路径]
よく使うオプションとパラメータ
| オプション | 説明 |
|---|---|
-P 端口号 |
接続ポートを指定(デフォルトは22) |
-b 批处理文件 |
バッチファイル内のコマンドを実行 |
-r |
ディレクトリ全体を再帰的にコピー |
-v |
詳細なデバッグ情報を表示 |
-i 私钥文件 |
指定した秘密鍵ファイルで認証 |
SFTP サーバーへの接続
基本的な接続方法
例
sftp username@hostname
例:
例
sftp user@example.com
ポートを指定して接続
サーバーが標準以外のポート(22以外)を使用する場合:
例
sftp -P 2222 user@example.com
鍵による認証を使用
例
sftp -i ~/.ssh/id_rsa user@example.com
SFTP のよく使う操作コマンド
1. ローカルファイル操作
| コマンド | 説明 |
|---|---|
lls |
ローカルディレクトリの内容を一覧表示 |
lcd |
ローカルの作業ディレクトリを変更 |
lmkdir |
ローカルにディレクトリを作成 |
lrm |
ローカルファイルを削除 |
2. リモートファイル操作
| コマンド | 説明 |
|---|---|
ls |
リモートディレクトリの内容を一覧表示 |
cd |
リモートの作業ディレクトリを変更 |
mkdir |
リモートにディレクトリを作成 |
rm |
リモートファイルを削除 |
rename |
リモートファイルの名前を変更 |
3. ファイル転送
| コマンド | 説明 |
|---|---|
put 本地文件 [远程路径] |
リモートサーバーにファイルをアップロード |
get 远程文件 [本地路径] |
リモートサーバーからファイルをダウンロード |
mput 本地文件* |
複数のファイルをアップロード |
mget 远程文件* |
複数のファイルをダウンロード |
実用的な例
例1:サーバーにファイルをアップロード
例
sftp user@example.com
sftp> cd /var/www/html
sftp> put index.html
sftp> exit
sftp> cd /var/www/html
sftp> put index.html
sftp> exit
例2:ディレクトリ全体をダウンロード(再帰)
例
sftp -r user@example.com:/backups /local/backups
例3:バッチファイルを使用
作成sftp_commands.txt:
put file1.txt put file2.txt get report.pdf exit
バッチを実行:
例
sftp -b sftp_commands.txt user@example.com
上級テクニック
1. ワイルドカードで複数のファイルを転送
例
sftp> mput *.jpg # すべてのjpgファイルをアップロード
sftp> mget log_*.txt # 先頭がlog_のtxtファイルをすべてダウンロード
sftp> mget log_*.txt # 先頭がlog_のtxtファイルをすべてダウンロード
2. ファイルの権限を変更
例
sftp> chmod 644 index.html
3. ファイル情報を表示
例
sftp> ls -l
4. シンボリックリンクを使用
例
sftp> symlink /path/to/original /path/to/link
よくある問題の解決方法
1. 接続が拒否された
- サーバーで SSH サービスが実行されているか確認
- ポートが正しいか確認
- ファイアウォールの設定を確認
2. 認証に失敗
- ユーザー名とパスワードが正しいか確認
- 鍵ファイルの権限を確認(600 にする必要があります)
- サーバーに自分の公開鍵があることを確認
3. ファイル転送が中断
- ネットワーク接続を確認
- 次のコマンドの使用を試す
regetとreputコマンドで転送を再開
4. 権限が不足
- リモートディレクトリの書き込み権限を確認
- 使用が必要になる場合があります
sudo(ただし sftp は通常、直接 sudo をサポートしていません)
セキュリティのベストプラクティス
- 鍵による認証を使用パスワード認証ではなく
- ユーザー権限を制限、chroot 環境を使用
- 定期的に更新SSH サーバーソフトウェア
- root ログインを無効化、通常ユーザー+sudo を使用
- ログファイルを監視(/var/log/auth.log)
まとめ
SFTP は Linux システムでファイルを安全に転送するための重要なツールです。このガイドを通じて、以下の点を理解できたはずです:
- SFTP の基本概念と接続方法
- よく使うファイル操作と転送コマンド
- 実用的なバッチ処理と上級テクニック
- よくある問題の解決方法
- 安全に使用するためのベストプラクティス
これで、ローカルとリモートサーバーの間で安全かつ効率的にファイルを転送できます。
その他の拡張
Linux コマンド大全