Linux コマンドとシェル スキル
sftp: SSH バジェットでのファイル転送
sftp は SSH 内で動作します。まさにそれが、他の製品よりも長生きした理由です。キー、chroot、ジャンプ ホスト、監査証跡はすべて無料で提供されます。 OpenSSH は、バージョン 9.0 で scp をひっそりと SFTP プロトコルに移動しました。これは、SFTP が実際のプロトコルの役割 (ディレクトリのリスト、mkdir、アクセス許可、名前の変更) を果たしており、プロトコルでの予期せぬ事態がはるかに少ないためです。インタラクティブ SFTP は 1 回限りの移動には適しています。自動化はバッチ モード、終了コード、および rsync への時折の謝罪を通じて実行されます。
要点
- 自動化はバッチ モードです。 sftp -bバッチ.txt user@host はコマンドのファイルを実行し、失敗するとゼロ以外で終了し、-b - を使用して標準入力から読み取ります。無人のパスワード プロンプトは、バグ バッチ モードにより 2 倍の速さで削除され、安全性が向上します。
- コマンド セットは意図的に小さくなっています。セッション内の ls -l、mkdir、put -p (タイムスタンプを保持)、get -r (再帰)、chmod、および df -h は、操作上のニーズの 95% をカバーします。
- rsync がいつ勝つかを知る: sftp はファイル全体を再送信しますが、ssh 経由の rsync -avz --partial はデルタを移動し、サイレントに何もプルーニングせず、バルク アーカイブが実際に気にするメタデータを保持します。
- サーバー側では、sftp はフェンスです。ChrootDirectory を含む Match ブロック内の ForceCommand Internal-sftp は、アカウントを、シェルをまったく持たない、暗号化され監査されたドロップ ボックスに変換します。
- 「sftp は機能するが、シェルは機能しない」は設計であり、バグではありません。サブシステムの sftp Internal-sftp 行がそれを可能にするものであり、OpenSSH 9.0 で scp が SFTP に移行したことは、サブシステムのないレガシー サーバーが古い scp ジョブを中断する可能性があることを意味します。
- Cron の使用は失敗の動作に基づいて判断されます: -o BatchMode=yes、-o ConnectTimeout=10、および明示的な終了コード チェックにより、サイレント ハングが大音量のページング可能な失敗に変わります。
- 進行状況の出力はノイズ制御されています。sftp はおしゃべりですが、cron ログは静かです。 -q (またはリダイレクト) に加えて sshd 側でログを記録すると、ギガバイト単位の転送バーにならない監査証跡が得られます。
- キャリアを構成する 1 つのタイプミス: sftp -P 2222 は大文字の P (小文字の -p は保持を意味します) ですが、scp は同じ文字の規則を交換しました。ポートが間違っている場合は、まずケースを確認してください。
現場ノート
かつて、cron sftp ジョブが、予期せぬパスワード プロンプトにより、誰も気付かないうちに 6 時間ハングしていました。それ以降のスクリプト化された転送はすべて、-b、-o BatchMode=yes を取得し、待機する代わりにページングする終了コード チェックを実行します。
よくある質問
OpenSSH 9.0 は本当に scp を変更しましたか?
表面ではなくプロトコルです。scp は、その下の SFTP 経由でファイルを移動するようになりました。そのため、sftp サブシステムを持たないホストは、従来の scp ジョブを静かに中断します。修正はサブシステムを有効にすることであり、習慣を元に戻すことではありません。
sftp をまったく使用せずに単一のファイルを移動できますか?
はい: cat bigfile.bin | ssh user@host 'cat > /tmp/bigfile.bin' はポータブルなワンパイプ転送です。履歴書やメタデータはありませんが、SSH が機能する場所であればどこでも機能し、まさにそのユースケースです。
sftp は scp や rsync より遅いですか?
場合によっては、ファイルごとのプロトコルのオーバーヘッドとデフォルトのバッファリングがバルク ディレクトリ ツリーに表示されることがあります。最適化する前にリンクを測定してください。通常、rsync は苦情が「遅すぎる」場合に応答することを覚えておいてください。
シェルアクセスなしでサードパーティにアップロードを許可するにはどうすればよいですか?
ChrootDirectory、ForceCommand external-sftp、および書き込み可能なサブディレクトリを備えた専用アカウント。キー、ジェイル、タイムアウト、ログ レビューが含まれており、招待ではなくドロップ ボックスです。
linux コマンドとシェル スキル に対するKinetikatechの支援
シンプルな提案です:管理者がサーバーを操作するかサーバーと戦うかを決定するコマンドとスクリプトの習慣。すべての基本インストールに存在するツールを使用して、テキストとプロセスを検索、変換、転送、監視します。 Linuxサーバーセキュリティとサーバー管理サービスにお任せください。徹底的に評価され、クリーンに実装され、24時間監視されます。