web-dev-qa-db-ja.com

安全でないネットワーク上のサーバー間で安全なrsyncを実行する方法

基本的に私が求めているのは、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を使用して同様の(またはそれ以上に)何かをした後です。

19
Xerxes

さて、ようやくこれを理解しましたが、解決策は私が望んでいたほどエレガントではありません。

サーバー側では、関連するユーザーの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/
5
Xerxes

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と同様の機能を備えていますが、ファイルシステムを歩いてデルタを計算する必要がないように、ローカルインデックスを両端に保持します。

18
Dave Cheney

この質問の主題であるdaemon-over-ssh-modeに興味があるかもしれません:

daemon-over-sshモードでrsyncを機能させることができません

2
rjmunro