web-dev-qa-db-ja.com

UNIX / LinuxでSSHを使用してパスワードなしでRsyncをセットアップする方法

パスワードを入力せずに2つのホスト間でrsyncを設定するにはどうすればよいですか?

19
user2010736

以下は The Geek Stuff の記事です。

1。 ssh経由のrsyncをテストします(パスワード付き):

Rsyncを実行して、リモートサーバー上のアカウントのパスワードを要求し、ファイルをリモートサーバーに正常にコピーすることを確認します。

次の例では、ローカルフォルダー/home/testをリモートフォルダに/backup/test (オン 192.168.200.10サーバー)。

これにより、リモートサーバー上のアカウントのパスワードが要求されます。

rsync -avz -e ssh /home/test/ [email protected]:/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 [email protected]

注:上記では、リモートホストのユーザーアカウントのパスワードを要求し、公開鍵を適切な場所に自動的にコピーします。 ssh-copy-idが機能しない場合は、前述の方法を使用して、sshパスワードなしのログインを設定します。

4。パスワードなしでssh経由でrsyncを実行します

これで、パスワードを入力せずにリモートホストにsshできるようになります。

ssh [email protected]

もう一度rsyncを実行します。今回はパスワードの入力を求められることはありません。

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
30
MangeshBiradar

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

または

  • Id_rsa.pubを開き、コンテンツをコピーします
  • Rsyncコマンドで同じユーザーを使用してServerBにログインします。
  • ServerBで、コンテンツを~/.ssh/authorized_keysに追加します。ファイルが存在しない場合は作成します。ファイルモードが700であることを確認します。
1
Johny

これらすべての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を介して、関連ファイルのみが転送されます。

転送が完了したときにのみ、古いバージョンを削除します。

Voila。Success。

0
SDsolar