rsyncをパスワード無しで実施する

 

CentOS 7でサーバ間の同期を実行する必要があったので、rsyncで同期してみました。

事前にサーバ間で鍵交換の設定させ、パスワード認証無しでrsyncを実施させてみました。

サーバBが、サーバAからパスワード認証無しでファイルを受信し同期するようにしてみました。

サーバA:送信側
サーバB:受信側

1 .サーバB(受信側)で、秘密鍵と共通鍵のセットを作成する

rsyncでログインを実行するユーザーで、以下のコマンドを実行する。
-Cオプションで”を設定することでコメントを削除しています。
-Nオプションで”とする事で、パスフレーズ無しとしています。

[ユーザー名@Server-b .ssh]$ ssh-keygen -t rsa -C ” -N ” -f /home/ユーザー名/.ssh/id_rsa

権限系の設定ちゃんと実施しおかないと、後で注意メッセージが表示されので設定します。

[ユーザー名@Server-b .ssh]$ chmod 700 /home/ユーザー名/.ssh
[ユーザー名@Server-b .ssh]$ chmod 600 /home/ユーザー名/.ssh/id_rsa.pub

2.サーバBからサーバAに公開鍵ファイルを転送する

公開鍵を送信側サーバに転送します。ユーザー名はログインするユーザー名を指定します。今回は、SCPでファイル転送実施します。(SSHのポートを変更していない場合は、-pオプションは必要ありません。)

[ユーザー名@Server-b .ssh]$ scp -P SSH時のポート番号 /home/ユーザー名/.ssh/id_rsa.pub ログインユーザー名@接続先サーバのIP:/home/ユーザー名/.ssh/id_rsa.pub

3.サーバAで鍵の設定を行う

送信サーバ側で鍵の設定を行います。ログインするユーザーで実行して下さい。

[ユーザー名@Server-a .ssh]$ cd /home/ユーザー名/.ssh
[ユーザー名@Server-a .ssh]$ cat id_rsa.pub >> authorized_keys

権限系の設定と公開鍵を削除します。

[ユーザー名@Server-a .ssh]$ chmod 700 /home/ユーザー名/.ssh
[ユーザー名@Server-a .ssh]$ chmod 600 /home/ユーザー名/.ssh/authorized_keys
[ユーザー名@Server-a .ssh]$ rm -f id_rsa.pub

4.rsyncコマンドを試してみる

設定が終わったら、rsyncを試してみます。rsyncコマンドのオプションは適時指定してください。

[ユーザー名@Server-b .ssh]$ rsync -avzu “ssh -p SSH時のポート番号 -i /home/ユーザー名/.ssh/id_rsa ” ユーザー名@接続先サーバ名:コピー元ディレクトリコピー先ディレクトリ

エラーになる、パスワードを聞かれる場合は、権限かファイル名を間違っているケースが多いかと思います。その編を再度確認してみましょう。

Cronに設定することで、定期実行も可能です。

※セキュリティ面は充分注意の上、実施可否を判断するようにして下さい。