Linux sftp コマンド

Linux 命令大全Linux コマンド大全


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

例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ファイルをすべてダウンロード

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 をサポートしていません)

セキュリティのベストプラクティス

  1. 鍵による認証を使用パスワード認証ではなく
  2. ユーザー権限を制限、chroot 環境を使用
  3. 定期的に更新SSH サーバーソフトウェア
  4. root ログインを無効化、通常ユーザー+sudo を使用
  5. ログファイルを監視(/var/log/auth.log)

まとめ

SFTP は Linux システムでファイルを安全に転送するための重要なツールです。このガイドを通じて、以下の点を理解できたはずです:

  • SFTP の基本概念と接続方法
  • よく使うファイル操作と転送コマンド
  • 実用的なバッチ処理と上級テクニック
  • よくある問題の解決方法
  • 安全に使用するためのベストプラクティス

これで、ローカルとリモートサーバーの間で安全かつ効率的にファイルを転送できます。

Linux 命令大全Linux コマンド大全

その他の拡張