Hatena::ブログ(Diary)

カンタンWEBぷろぐらみんぐ<?=tageo;>

2012-09-05

【CentOS】【バックアップ】SSHでパスワードなしでログイン+rsyncでファイルの同期(バックアップ) 

| 16:37

サーバ2台構成でファイルの同期(バックアップ)を行う場合の設定。

※ここでは同期≒バックアップとする

A→B

Aサーバ(192.168.0.1):バックアップ

Bサーバ(192.168.0.2):バックアップ


概要:

rsyncuser(rsync専用ユーザ)で全てのファイルの同期をrsyncによって行う。

sudorsyncコマンドの実行権限を設定することで権限のないファイルも同期を可能にする。

という具合いにAサーバのファイルをBサーババックアップするときのメモ。

1.ユーザの作成[Aサーバで]

rsync専用ユーザrsyncuserを作成する。

# useradd rsyncuser
 
# passwd rsyncuser
Changing password for user rsyncuser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

2.RSA認証の秘密鍵と公開鍵を作成[Aサーバで]

作成した「rsyncuser」で以下のコマンドを実行。

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rsyncuser/.ssh/id_rsa): 「Enter」を押す
Enter passphrase (empty for no passphrase): 「Enter」を押す
Enter same passphrase again: 「Enter」を押す
Your identification has been saved in /home/rsyncuser/.ssh/id_rsa.
Your public key has been saved in /home/rsyncuser/.ssh/id_rsa.pub.
The key fingerprint is:
04:cf:a6:c9:2e:01:41:6c:86:34:03:96:c9:7b:7a:cd rsyncuser@serverhostname

作成された公開鍵ファイルの修正で、ホスト名をIPアドレスに変更する。

serverhostname(※Aサーバのホスト名)を192.168.0.1(※AサーバIPアドレス)に変更する

# vi id_rsa.pub

3.公開鍵をBサーバに作成[Aサーバで]

作成した「rsyncuser」で以下のコマンドを実行。

#scp /home/rsyncuser/.ssh/id_rsa.pub 192.168.0.2:/home/rsyncuser/.ssh/

クライアント側で/home/rsyncuser以下に.sshディレクトリが存在しない場合は
.sshディレクトリを作成する

rsyncuserが存在しない場合は、rsyncuserを作成する

Bサーバで
# useradd rsyncuser

4.SSHの設定[Bサーバで]

RSA認証を有効にする。

# vi /etc/ssh/sshd_config

以下のように修正。

※コメントアウトをはずせばOK
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys


※ログインするユーザを制限している場合、許可する
AllowUsers rsyncuser

そしてsshd再起動

# /etc/init.d/sshd restart

5.visudoの設定[Bサーバで]

1.rsync.shファイルの作成

/home/rsyncuser/で

# vi rsync.sh

以下のように記載。

#!/bin/sh
/usr/bin/sudo /usr/bin/rsync $*

そして/home/rsyncuser/rsync.shで保存。

パーミッションは755にしとく。


2.visudoの設定

以下の一行を追記。

rsyncuser ALL=(ALL) NOPASSWD: /usr/bin/rsync

これでOK。

6.パーミッションの設定[A,Bサーバ両方で]

.sshディレクトリのPermissionが744になっていたのでこれを700に変更。

# chmod 700 .ssh

id_rsa.pubファイルは600に変更。

# chmod 600 id_rsa.pub


※Bサーバでid_rsa.pubをコピーしてauthorized_keysを作成。

# cp id_rsa.pub authorized_keys

パーミッションは大事で、うまくできていないとパスワードを聞かれることに

なり、今回のパスワードなしでログインするという目的は達成されない。

コワいね(*´Д`)

7.rsyncの実行[Aサーバで]

さっそくrsyncを実行してみる。rsyncはいろいろオプションあるので調べてみてください。

※--updateオプションは更新があったファイルだけを、--deleteオプションは完全同期みたいな感じ。

例).Aサーバの/var/www/html/ディレクトリとBサーバの/var/www/html/を同期する。

# rsync -avz -e ssh --update --rsync-path="/home/rsyncuser/rsync.sh" /var/www/html/ rsyncuser@192.168.0.2:/var/www/html/


もしこんなエラーが出たら。

sudo: sorry, you must have a tty to run sudo

※Bサーバ

# vi /etc/sudoers

「Defaults    requiretty」の行をコメントアウトすると良い。

tageotageo 2014/08/21 12:18 ※Bサーバで
vim /etc/ssh/sshd_config

AllowUsers rsyncuser

トラックバック - http://d.hatena.ne.jp/tageo/20120905/1346830627
リンク元
Connection: close