基本的に私が求めているのは、ssh内にrsyncをラップする手段を誰かが見つけたかどうかです。
OpenSSH v4.9以降では、sftpには着信接続などをchrootできるいくつかの素晴らしいオプションがあります。これは私が検討する解決策ですが、RHELにこだわっており、RHEL4もRHEL5もそのバージョンに対応していませんssh。
私の現在の解決策は、クライアントユーザーのキーを使用してサーバーサイドにこのようなものを追加することです...
server%cat〜/ .ssh/authorized_keys command = "cd/srv/rsync/etl && tar --exclude './lost+found' -pcf-./" ssh-rsa ...
...したがって、クライアントは1つのことだけに制限されます...
client%ssh -T -i $ {HOME} /。ssh/id_rsa [email protected]> sensative.tar
これにより、接続とサーバー(クライアントから)が保護されますが、すべてのファイルが何度も取得されるため、非効率的です。
私はrsyncを使用して同様の(またはそれ以上に)何かをした後です。
さて、ようやくこれを理解しましたが、解決策は私が望んでいたほどエレガントではありません。
サーバー側では、関連するユーザーのauthorized_keysファイルに以下を追加する必要があります...
no-pty, command="exit"
クライアントでは、次のようにしてトンネルを作成できます...
ssh -l username -fNTL 8073:server:873
トンネルが確立されると、通常どおりにrsyncを実行できます(ダブルコロン構文を使用することはできません)。
選択するlocalhostポート番号(8073)は完全にオプションです。rsyncto ...を実行する必要があることを覚えておいてください。
rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/
Rsyncはトランスポートとしてのsshの使用をサポートしています
rsync -az /path/to/source username@Host:/path/to/destination
古いバージョンのrsyncでは、sshを明示的に指定する必要がある
rsync -aze ssh /path/to/source Host:/path/to/destination
Rsyncを使用する代わりの方法は B。C. Pierce's Unison です。これはrsyncと同様の機能を備えていますが、ファイルシステムを歩いてデルタを計算する必要がないように、ローカルインデックスを両端に保持します。
この質問の主題であるdaemon-over-ssh-modeに興味があるかもしれません: