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


19

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

linux  ssh  rsync 

それは非常に役立つはずです:blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom

Maverick143が回答を提供しましたが、プログラミングとはほとんど関係がないため、この質問は実際にはStackOverflowに属していません。SuperUser.comの方が関連性が高かったでしょう。
マーティン

回答:


30

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

1. sshでrsyncをテストします(パスワードを使用):

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

次の例では、ローカルフォルダー/home/test/backup/test192.168.200.10サーバー上の)リモートフォルダーに同期します。

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

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/

2. ssh-keygenがキーを生成します。

sshsshを実行するときにパスワードを要求しないように設定します。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/

これはよく役立ちます。troy.jdmz.net/rsync/index.html
MangeshBiradar

5
元の作成者を参照する必要があるthegeekstuff.com/2011/07/rsync-over-ssh-without-passwordからコピーして貼り付けます。
ローレンスシェローネ2014年

別のユーザーを使用する必要がある場合は、ssh-copy-idを実行するときに使用できます。ssh-copy-id -i〜/ .ssh / id_rsa.pub user@192.168.200.10
Finni McFinger

1

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であることを確認します。

0

これらすべての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を使用して常に関連ファイルのみを転送します。

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

出来上がり。成功。


-1

アドレスにユーザーをマークする方が良いでしょう

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100

2
これで質問に答えることができるかもしれませんが、なぜそうするのかについての説明を提供できれば、より良い答えになります。
DavidPostill

構文も。私はこれが次のようなコマンド置換として使用されて rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)いるexcludes--delete思います。すべてなど。まだ動作していませんが、これは私が見た中で最も近いものです。たぶんあなたも、あなたはすでに可能であればこれをしなければならないsshscpターゲットサーバに、それは通常のSFTPの形式を使用しないためのrsyncデーモンが実行されている必要があります。私はまだ探しています。
SDsolar 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.