ネットワークを超えてバックアップ

| コメント(2) | トラックバック(0)

BSD Hackの#38に書いてあるsshを利用したバックアップ方法を試してみることにした。
ただ、読み返してみると結構説明が省かれている。(特にsshのくだり)

鍵にパスフレーズを入力した場合、おそらく本に書かれているままのことをしただけではうまく動かないので、今回はkeychanを利用してパスフレーズありでもsshスクリプトを書いて自動化できるようにしたのでその時のメモ。


まずbackupを取りたいマシンにbackup専用ユーザを作成。そのユーザで
ssh-keygen -b 1024 -t dsa
とやり、1024bitの強度の秘密鍵と公開鍵をDSA方式で生成。.sshディレクトリ内にid_dsaとid_dsa.pubができるので公開鍵であるid_dsa.pubをバックアップファイルの送り先であるアカウントのauthorized_keysに追加する。(ここではバックアップファイルの送り先を192.168.xxx.yyy, バックアップファイルが作られる専用のアカウントをbackupとする。)

authorized_keysに公開鍵を追加し終わったら、backupを取りたいマシン上で
echo aaaaa | ssh backup@192.168.xxx.yyy "cat > hoge.txt"
とかやって実際に192.168.xxx.yyyのbackupアカウントのホームディレクトリに'aaaaa'と書かれたhoge.txtが生成されるかテストしてみる。

ただこの時点では
Enter passphrase for key '/home/backup/.ssh/id_dsa
と鍵を生成したときに打ち込んだパスワードを毎回聞かれてしまうのでcronで自動化できない。パスフレーズを打ち込まないという方法もあるけど、それはあまりセキュアじゃないのでやりたくないところだ。

そーゆうときはkeychainを使って自動化する。FreeBSDの場合、/usr/ports/security/keychainにある。

#keychainのインストール
portinstall security/keychain

#一応確認
pkg_info | grep key
-> keychain-2.6.8 A user-friendly front-end to ssh-agent(1) => ok

んで
rehash

#起動してみる
keychain ~/.ssh/id_dsa
パスフレーズを聞かれるので鍵生成時に打ち込んだパスを入力。
その後
source ~/.keychain/$HOST-sh

毎回ログインする度にこの2行を打ち込むのはツライので
zshなら.zlogin、bashなら.bash_profileに

/usr/local/bin/keychain ~/.ssh/id_dsa
source ~/.keychain/$HOST-sh

と書いて再ログインすれば自動で2行分がログインされる度に実行される。

おそらくもう echo aaaaa | ssh backup@192.168.xxx.yyy "cat > hoge.txt" とか打ち込んでもパスの要求はされないはずだ。


------

早速cronで定期的に動かすサンプルスクリプトを書いてみる。最初に例の~/.keychain/にある、あのスクリプトを呼び出す必要がある。シェルスクリプト内で$HOSTやシェルに組み込まれてるsourceコマンドは使えないので、.zloginで書き込んだ内容を若干変えなければならない。

とりあえず以下のようなサンプルスクリプトを書いた。

#!/bin/sh
. ~/.keychain/`uname -n`-sh
echo hogehoge | ssh backup@192.168.xxx.yyy "cat >> hoge.txt"

あとはこれをchmod 700 cron_test.shとやって実行可能にし、cronで実行させる。
crontab -e とやってcronエディタを開いて
*/2 * * * * /home/backup/bin/cron_test.sh
と書き込む。

あとはバックアップファイル格納先で tail -f hoge.txt とやってちゃんと2分おきに書き込まれているかテストしてみる。幸い何事もなく、ちゃんと書き込んでいるようだ。テストが終わったらcronの1行分を削除して同様にバックアップスクリプトをちゃんと書けばいい。

今回のようなcronによるsshスクリプトを使う場合、scponlyと組み合わせてログイン先で使えるコマンドを制限してあげればセキュリティー的になお良いのですが、この辺で力尽きました。scponlyは次回暇なときに試します。

トラックバック(0)

トラックバックURL: https://hoge.sub.jp/blog-cgi/mt/mt-tb.cgi/1310

このブログ記事について

このページは、Lyoが2007年7月26日 15:53に書いたブログ記事です。

ひとつ前のブログ記事は「Woody->Sarge化といつものツールをinstall」です。

次のブログ記事は「subversionレポジトリのバックアップ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3