両側にルートアクセスがあるssh経由のRsync


14

古いubuntuサーバーと新しいdebianサーバーが1つずつあり、古いサーバーから新しいサーバーにデータを移行しています。rsyncを使用してデータを転送し、同等のtar / scp / untarプロセスよりも簡単かつ迅速に最終移行を行いたいと思います。

例として、ホームフォルダーを一度に1つずつ新しいサーバーに同期したいと思います。これには、ソース側のすべてのファイルが誰でも読み取り可能というわけではなく、正しいアクセス権で/ homeに書き込む必要があるため、両端でルートアクセスが必要です。両側でrsyncルートアクセスを許可する方法がわかりません。

関連する質問をいくつか見ましたが、私がやろうとしていることとまったく一致するものはありません。

両方のサーバーでsudoをセットアップして作業しています。

回答:


14

実際、アントワーヌが示唆するように、rsyncを実行するためにSSH経由のルート認証を許可する必要はありません。トランスポートおよびシステム認証は、ファイルの読み取りと書き込みのために両端でsudoを使用してrsyncを実行できる限り、ユーザーアカウントに対して完全に実行できます。

移行先サーバーのユーザーとして、次のように移行元サーバーからデータを取得できます。

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

両方のサーバーで実行するユーザーは、rsyncバイナリへのパスワードなし* sudoアクセスが必要になりますが、rootとしてsshログインを有効にする必要はありません。使用しているユーザーが相手と一致しない場合、user @ boron:を追加して、別のリモートユーザーを指定できます。

幸運を。

*または、タイムアウトウィンドウ内でパスワードを手動で入力する必要があります。


5
これは古い質問ですが、この受け入れられた答えに注意の言葉を追加したいと思い ます。私の理解では、パスワードなしの「sudo rsync」を許可することは、rootアカウントを開いてリモートログインすることと同じです。これは、これにより、すべてのシステムファイルをパスワードなしでダウンロード、変更、および置換できるため、完全なルートアクセスを取得することが非常に簡単だからです。
Ascurion

3

あなたのデータは非常に敏感でない場合は、使用することができますtarsocat。私の経験では、これは多くの場合rsync、SSH よりも高速です。

あなたが必要socatまたはnetcat両側に。

ターゲットホストで、データを配置したいディレクトリに移動し、その後実行します。
socat TCP-LISTEN:4444 - | tar xzf -

ターゲットホストがリッスンしている場合、ソースで次のように起動します。
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

このセットアップには、2台のサーバー間の信頼できる接続が必要です。


いい視点ね。信頼できる環境では、暗号化しないことで多くの速度を獲得できます。小さなファイルでは問題にならないかもしれませんが、GBのデータでは問題になります。
pboin

2

わかりました、私は私のために働く何かを得るためにすべての手がかりをつなぎ合わせました。

サーバーを「src」と「dst」と呼びましょう。

移行先サーバーでルートのキーペアを設定し、公開キーを移行元サーバーにコピーします。

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

ソースサーバー上のルートの承認済みキーに公開キーを追加します

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

宛先サーバーに戻り、rsyncを使用してデータをプルします。

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.