2007-11 << 2007-12 >> 2008-01

2007-12-28 (金)

*自動バックアップ

バックアップのスクリプトを見直す.scpでリモートにバックアップするようにする.

方針としては,パスフレーズ無しのバックアップ専用の鍵を登録しておいて,cronから起動されるスクリプトで自動的にscpでコピーするようにしたい.パスフレーズ無しなので,もしも秘密鍵が記録されたファイルが盗まれると何でも出来てしまうようになる.scponlyなどのシェルを使うのも手だけど,バックアップ先は普段使っているアカウントにしたいので,それは使えない.というわけで,authorized_keysのcommandオプションで対処.

まず,パスフレーズ無しのバックアップ用のキーを生成してバックアップ先に公開鍵を転送しておきます.

ssh-keygen -N "" -f ~/.ssh/backup
scp =~/.ssh/backup.pub ksk@backuphost:.

続いてバックアップ先での作業.

backup.pubをauthorized_keysに追加すればOkですが,backupディレクトリへのscp以外が出来ないようにしておきます.

mkdir backup -m 700
echo -n 'no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="scp -t backup/" ' >> ~/.ssh/authorized_keys
cat backup.pub >> ~/.ssh/authorized_keys

これで設定は終わり.バックアップ元に戻って,

scp -i ~/.ssh/backup test.txt ksk@backuphost:.

とかやって,パスワード無しでバックアップ先のbackupディレクトリにコピーされれば成功.

あとは,バックアップ用のスクリプトを以下のように書いて終わり.

#!/bin/sh
rm /root/backup/*
tar -czf /root/backup/www.tar.gz /home/www
tar -czf /root/backup/mailman.tar.gz /usr/local/mailman
scp -p -i /root/.ssh/backup /root/backup/* ksk@backuphost:.

scpの-tオプションが安全なのかちゃんと確認してないのが問題かも.そもそもマニュアルに載ってないし.