パスワードを入力せずに2つのホスト間でrsyncを設定するにはどうすればよいですか?
パスワードを入力せずに2つのホスト間でrsyncを設定するにはどうすればよいですか?
回答:
以下はThe Geek Stuffの記事です:
1. sshでrsyncをテストします(パスワードを使用):
rsyncを実行して、リモートサーバー上のアカウントのパスワードを要求し、ファイルをリモートサーバーに正常にコピーすることを確認します。
次の例では、ローカルフォルダー
/home/test
を/backup/test
(192.168.200.10
サーバー上の)リモートフォルダーに同期します。これにより、リモートサーバー上のアカウントのパスワードが要求されます。
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygenがキーを生成します。
ssh
sshを実行するときにパスワードを要求しないように設定します。ssh-keygen
ローカルサーバーで使用して、公開キーと秘密キーを生成します。$ ssh-keygen
パスフレーズを入力(パスフレーズがない場合は空):
同じパスフレーズをもう一度入力します。注:パスフレーズの入力を求められたら、Enterキーを押してください。ここではパスワードを入力しないでください。
3. ssh-copy-idは公開鍵をリモートホストにコピーします
ssh-copy-id
公開鍵をリモートホストにコピーするには、を使用します。ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
注:上記では、リモートホストのユーザーアカウントのパスワードを要求し、公開鍵を適切な場所に自動的にコピーします。ssh-copy-idが機能しない場合は、前に説明した方法を使用して、sshパスワードなしのログインを設定します。
4.パスワードなしでssh経由でrsyncを実行する
これで、パスワードを入力せずにリモートホストにsshできるようになります。
ssh user@192.168.200.10
もう一度rsyncを実行します。今回はパスワードの入力を求められることはありません。
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
ServerAで公開鍵を生成する
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
公開鍵が生成され、次の場所に保存されます
~/.ssh/id_rsa.pub
公開鍵をリモートホストにコピーする
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
または
~/.ssh/authorized_keys
。ファイルが存在しない場合は作成します。ファイルモードが700であることを確認します。これらすべてのrsync提案は、Ubuntu 16.04 LTSで2017年8月に最新バージョンを使用すると失敗します。それらのどれも動作しません。
また、ファイルサーバーで実行するrsyncデーモンを必要とする欠点も共有しています。
この回答は一般的なLinux NASで機能します
ここでの手順:
1)以下に示すようにrsyncを使用します。(作成した/ mntまたは/ mediaの下のディレクトリ、またはマウントしたデバイス上。どちらでもかまいません)2)以下に示すように、scpでファイルを転送します。FileZillaも機能します。
これらすべて(FileZillaを除く)は、パスワードなしでcronで機能します。
この設定は非常にうまく機能します。パスワードが必要になるのは、最初のssh-copy-idをセットアップして、RSAパスワードなしログインをセットアップするときだけです。次に、FileZillaに1回プログラムします。その後、毎日、パスワードのプロンプトは表示されません。これは簡単。そして最良の部分は、rsyncプログラムのすべての利点を使用できることです。
この回答では、パスワードなしでrsync自体を使用する方法について説明します。
また、どちらのシステムにも別のデーモン(rsync)をインストールする必要はありません。
まだの場合は、次のようにします。
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
これでテストしてみてください:
ssh NASserver
そしておそらくこのようなもの:
scp myfile myusername@NASserver:Documents
2台目のハードドライブがあるので、rsyncを使用してブートドライブをsdb1のサブディレクトリにコピーします(/ mntの下にマウントされ、rsyncから除外されます)。
物理ハードドライブがなく、十分な空き容量がある場合は、/ mnt(または/ media)の下にサブディレクトリを作成して使用します。
ディレクトリが除外されている限り、別のドライブにあるかどうかは関係ありません。
バックアップスクリプトは次のとおりです。
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
rsyncがスクリプトを使用した後:
私は常にターゲットNASserver:/ mnt / fullsys / mysystemに新しいディレクトリを作成するため、関連するファイルのみが転送されます。
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
出来上がり!しばらくかかりますが、それで完了です。
どちらのスクリプトもcronで正常に機能します。
代わりに、FileZillaを使用して手動でNASサーバーに送信します。
削除が発生する可能性がある
make a new directory and enter it
ため、対象の1TB HDDでFileZillaを使用して常に関連ファイルのみを転送します。
転送が完了したときにのみ、古いバージョンを削除します。
出来上がり。成功。
アドレスにユーザーをマークする方が良いでしょう
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
いるexcludes
と--delete
思います。すべてなど。まだ動作していませんが、これは私が見た中で最も近いものです。たぶんあなたも、あなたはすでに可能であればこれをしなければならないssh
とscp
ターゲットサーバに、それは通常のSFTPの形式を使用しないためのrsyncデーモンが実行されている必要があります。私はまだ探しています。