Rsync で SUSE Linux 間でバックアップ

rsync を使った syslog のバックアップ

Web translate in English

※ 初出 autherized authorized の誤りです。

 ここでは SUSE Linux Enterprise Server (sles11)を rsync でパスワードなしでバックアップする方法について説明します。syslog サーバなど、あればいいけど容量を食うシステムの場合など便利です。

 rsync は --daemon オプションで起動する方法もありますが、パスワードをシークレットファイルにしなければならないということもあり、cron で自動実行させる方法を検討しました。

この文書を作成するにあたり、次の文書が役に立ちました。


SSH (Secure Shell) Tricks II

rsyncとsshで別のマシンにバックアップ

ここでは、バックアップ元サーバーを myserver バックアップ先を backupserver とします。また、ここでは全て root で作業することを前提として説明します。

-ポイント-
 1) 送信側で公開鍵を作り、受信側のリストに追加します。
 2) 受信側で ssh の設定を変更し、鍵交換による接続を許可します。
 3) 送信側で ssh でパスワードなしで受信側に接続できることを確認します。

-公開鍵の作成-

 バックアップ元のコンソールから次のコマンドを実行します。

myserver:~ # ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[ENTER]
/root/.ssh/id_rsa already exists.[すでにあれば上書きします]
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):[空欄のままENTER]
Enter same passphrase again:[空欄のままENTER]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
d0:34:5a:c5:ff:93:32:98:4f:df:7a:3a:a4:51:8a:3e root@myserver
The key's randomart image is:
+--[ RSA 2048]----+
| +o. |
| = .. |
| o . . |
| . . . |
| S + + . |
| + * = |
| . o B o |
| E o o o|
| . o= |
+-----------------+

myserver:~ # cd .ssh
myserver:~/.ssh # ls
autherized_keys id_rsa id_rsa.pub known_hosts
<---- /root/.ssh に公開鍵が作成されていることを確認します。

この id_rsa.pub を id_rsa.pub.myserver などの名前に変更し、 scp や usb メモリ、ネットワークの公開フォルダなどを通しbackupserverの /root/.ssh にコピーします。

-受け側の公開鍵の登録-

受け側(backupserver)の /root/.ssh の認証キーリストを一応バックアップします。

backupserver:~/.ssh # cp authorized_keys authorized_keys.old

認証キーリストに送信側の公開鍵を追加します。

backupserver:~/.ssh # cat id_rsa.pub.myserver >> authorized_keys


-sshd の設定とリスタート-

受け側の/etc/sshd/sshd_config を編集します。編集前に一応バックアップを取ってください。

backupserver:/etc/ssh # cp sshd_config sshd_config.old

backupserver:/etc/ssh # vi か gedit で sshd_config を編集します

次の例はコメントを抜いたところだけを示します。特に下線部分が重要なようです。

※操作は YaST でもできます。

-編集前-
backupserver:/etc/ssh # cat sshd_config

Host *
ForwardX11Trusted yes
Protocol 2
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
SendEnv LC_IDENTIFICATION LC_ALL


-編集後-
backupserver:/etc/ssh # cat sshd_config

Host *
Protocol 2
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PermitRootLogin yes
UsePAM no

X11Forwarding yes
Subsystem sftp /usr/lib64/ssh/sftp-server
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL


※ sshのセッション開始が遅い場合、特に ユーザ名とパスワードを送ってからのレスポンスが異常に遅い場合

UseDNS no

の行を加えてください。どうもIPアドレスから DNS に延々と逆引きをするため、タイムアウトを待っているようです。DNSにホスト名が登録されている場合や hosts が設定されていれば問題ないようです。

-sshdを再起動します-
backupserver:/etc/ssh # /etc/init.d/sshd restart
Shutting down SSH daemon done
Starting SSH daemon done

万が一動かない場合は sshd_config や authorized.keys を戻してください。

-ログイン確認-

送信側(myserver)からパスワードなしで backupserver にssh ログインできることを確認します-
myserver:~/.ssh # ssh backupserver
Last login: Mon May 24 14:15:16 2010
backupserver:~ #


同じく putty などの ssh クライアントからはパスワードを要求してログインできることを確認します。

backupserver からログイン

login as: root
root@backupserver's password:xxxxxxxx
Last login: Mon May 24 15:59:52 2010 from 192.168.1.10

backupserver:~ #


syslog サーバ(myserver) から rsync を使ってパスワードなしで backupserver にコピーできることを確認します。

myserver:~/Documents # ls
NewDocuments.ott NewSpreadsheets.ots <---- ファイルがある

myserver:~/Documents # rsync -avz -e ssh * backupserver:/tmp <--- コピーしてみる
sending incremental file list
NewDocuments.ott
NewSpreadsheets.ots

sent 9928 bytes received 50 bytes 376.53 bytes/sec <--- パスワードなしでコピーされた
total size is 13334 speedup is 1.34
myserver:~/Documents #

-cronによる自動実行-

次のテキストファイルを /sbin/syslogcopy.sh という名前で作成します。 backup-xxxx は必要に応じて変更してください。

 /usr/bin/rsync -avz -e ssh /backup-from-pash/* root@backupserver:/backup-to-path/

 実行フラグ(x) を root に与えます。
# chmod 700 /sbin/syslogcopy.sh

毎朝7時に実行するよう crontab に次の1行を追加します。
# crontab -e

0 7 * * * /sbin/syslogcopy.sh

セキュリティ上「不適切だね」というご意見があればコメントお待ちします。

-keyword-

Novell Suse Linux Enterprise Server 11, SLES11, rsync, ssh, backup, バックアップ, パスワードなし, nopassword, slow ssh login, windows, contos, ubuntu, xen, virtulization, 仮想化

visit MySite
by islandcenter | 2010-05-25 03:36 | SUSE | Comments(0)