ここに書かれたことを実行して、「おいた」にあっても責任は持ちません。あしからず。
ネットワークでつながれたサーバをバックアップしたい。 バックアップすべきサーバにはルート権限はない。 バックアップすべきサーバに対してssh、sftp、scpなどは使える。 anonymous ftpディレクトリに置けるようなデータではない。 バックアップデータを保存するサーバのルート権限はある。
というもの。どちらのサーバもLinuxマシン。
ssh-agentとkeychainを利用し、cronにより自動でscpする
以下、
と表記する。
$ cd $ ssh-keygen -t dsa
パスフレーズを尋ねられるので、入力する。 なお、下のほうの設定で、--clearオプションでkeychainを起動するようにします。 そうするとログインする度に尋ねられます。 このことも念頭においてパスフレーズを決めるたらいかがでしょう。
これで、「~/.ssh」に id_dsa と id_dsa.pub ができる。
$ ls -l .ssh
で確認できる。
ホストにログイン $ sftp hohehohe@client.hoge.jp $ get .ssh/id_dsa.pub offsite.pub $ cat offsite.pub >> .ssh/authorized_keys $ chmod 700 .ssh $ chmod 600 .ssh/authorized_keys $ rm offsite.pub
ここまではLinuxでのバックアップを自動化するに 従った。 しかし、これ以降はLinuxでのバックアップを自動化するに 書かれたとおりに実行すると ssh-agentのプロセスが消えなかったりするなどの弊害があるので従わないほうがいい。
http://www.gentoo.org/proj/en/keychain.xml から、 keychain-2.6.8-1.noarch.rpm をいただく
$ su # gpg --keyserver subkeys.pgp.net --recv-key 20104eb0 # gpg --fingerprint 20104eb0 # gpg --export --armor 20104eb0 > /tmp/20104eb0.pub # rpm --import /tmp/20104eb0.pub # rm /tmp/20104eb0.pub # rpm -K keychain-2.6.8-1.noarch.rpm # rpm -Uvh keychain-2.6.8-1.noarch.rpm
インストール方法も http://www.gentoo.org/proj/en/keychain.xml に従う
.bash_profile に以下を追加する
# .bash_profile 〜〜 略 〜〜 /usr/bin/keychain --clear ~/.ssh/id_dsa source ~/.keychain/$HOSTNAME-sh source ~/.bashrc
ポイント
共通テーマ: OpenSSHキー(鍵)の管理 第2回 を参考にした。 こんな批判的な記事〇〇とssh-agentは使いようもあります
ログインしたあとにパスフレーズが尋ねられるので、答える
なお、これで、リモートホストにログインせずに入れます たとえば $ ssh -l hogehoge host.hoge.jp であっという間にホストの中
これはお好みで。たとえば、こんな感じのスクリプト(backup.sh)をつくる。
#!/bin/sh source /home/hohehohe/.keychain/$HOSTNAME-sh cd /home/hohehohe scp -r hogehoge@host.hoge.jp:backup ./ cd /home/hohehohe/backup/kyoto find ./ -type f -mtime '+14' -exec rm -f {} \;
$ chomod 700 backup.sh
ポイント
念のためのbackup.shの説明
$ crontab -e
下のように書く
24 1 * * * /home/hohehohe/backup.sh
確認は
$ crontab -l
Today:2 | Yesterday:0 | Total:7832 since 13 December 2006 |