SSHを介してRsyncデーモンを強制する

SSHを介してRsyncデーモンを強制する

@roaimaの洞察のおかげで、以下のリモートサーバーバックアップスクリプトが実際に私が望むようにSSH暗号化を使用しないことがわかりました。

私のrsyncコマンドはここにある例に基づいています。
https://www.man7.org/linux/man-pages/man1/rsync.1.html

rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest

ただし、現在のバックアップスクリプトの実行時に実際に発生する状況は次のとおりです。

1.) 指定されたユーザーとして ssh に接続し、
2.) マイログイン通知スクリプトが電子メールで ssh ユーザーのログインを確認します (接続解除/再接続時に繰り返し),
3.)質問:rsyncデーモンが接続されて作業を実行します。-外部-これは実際に私が望むSSHシェル暗号化を得ることができないことを意味します。

バックアップスクリプトを実行し、リモートサーバーでコマンドを実行してこれを確認しましたwhossh-backup-user-いいえ-rsyncデーモンの実行中にサーバーに接続します。

現在のバックアップスクリプト(root以外のユーザーとして実行する必要があります)

#!/bin/bash
while [ 1 ]
do
     rsync -avxP --delete --append --checksum --timeout=180 --bwlimit=150 --rsync-path="sudo rsync" --log-file=/var/log/rsync.log --password-file=/etc/rsyncd.passwd -e "ssh -l backup-user" 111.22.333.444::data /media/user/WebMade/Server-Backups/Prod/today/
    if [ "$?" = "0" ] ; then
        echo "rsync completed normally"
        exit
    else
        echo "Rsync failure. Backing off and retrying..."
        sleep 10
    fi
done
#EOF

たぶん誰かが何が起こっているのかを明確にすることができます。私がマニュアルページを誤って理解した(またはおそらく:-/)、提供された例は間違っています。

ありがとう

答え1

すべてが大丈夫です。ここでは問題ありません。

ここにある他の答えは部分的に間違っており、部分的に欠点がありません。あなたがしたことは、SSH接続を介してrsyncデーモンを作成して通信するための正しい文書化された方法です。このパターンに慣れていない人は、「」というrsyncマニュアルを確認することをお勧めします。リモートシェル接続によるRSYNC-Daemon機能の使用」。

--rshまたは、ダブルコロン構文と組み合わせ-eて設定すると、このモードが有効になります。その後、RsyncはSSHを使用してリモートシステムに接続し、そこから(SSHセッションの下で)デーモンを作成し、SSHトンネルを介して通信します。 SSH認証と暗号化でデーモン専用機能を使用できるため、非常に便利なモードです。ssh::

whoそれが何をすると思うかは言いません。whow他の選択肢と同様に)対話型セッションのみが一覧表示され、sshrsyncデーモンを起動するために使用されるセッションは対話型ではないため(またはシェルをまったく使用しないため)ここには表示されません。マニュアルで説明されているタスクを実行するためにrsyncを信頼しない場合は、ps -efHView sshセッションとリモートシステムで実行されているrsyncデーモンを使用して、ss -tポート22のSSH以外のシステム間にTCP接続がないことを確認できます。stracersync プロセスで、rsync プロセスと ssh プロセス間の通信を確認します。

答え2

::ターゲットパスソースにデュアルコロン()がある場合は、サービスの使用を示しますrsyncd。単一コロン(:)は(通常)ログインを意味しますssh

これが完了すると、リモートパスは/アカウントがログインするホームディレクトリから始まるか、それと相対的でなければなりません。

例えば

[email protected]:docroot

削除--checksumし、rsyncいつ使用するかを決定します。 (チェックサムを自動的にスキップする唯一のケースは、ファイルサイズと変更時間の両方が一致する場合です。)

バリアントの使用を中止してください--append〜する遅かれ早かれ、これはバックアップのデータ破損につながります。あなたはほぼ確実に--partialこれをしたいと思い、すでに含まれています-P

リモートシステムsshにログインするために使用されます。backup-user203.0.113.1(たとえば)2つのディレクトリlogsとを使用すると、website次のコマンドラインを使用してバックアップできます。

 rsync -aivP --delete [email protected]:website/ /my/local/copy

今理解できますコメントrsyncdサービスからファイルをコピーする必要がありますが、安全なssh(暗号化された)転送を提供する接続を介してファイルを転送しようとしています。便利なことに、マニュアルページにはrsync実際に例があります。環境変数を設定してトンネルをRSYNC_CONNECT_PROG定義しsshrsyncdコマンド自体からサービスに接続します。

RSYNC_CONNECT_PROG='ssh [email protected] nc %H 873' rsync -aivP --delete localhost::data/ /my/local/copy

それでも注意してください。どちらのソリューションも、トロイの木馬などのWebページの破損から長期的な保護を提供しません。毎回バックアップを完全なLive Copyに置き換えるので、バックアップスクリプトを実行するとすぐに、ライブエラーがバックアップに伝播されます。考える政府財務大臣または、他のマルチレベルバックアップ計画(日曜日、火曜日、木曜日に1つずつ、3つの異なるバックアップ)。このツールはrsnapshot上記のレイヤーとして効果的に達成できますrsync

関連情報