自鯖→プロバイダ鯖へのパスフレーズレスrsyncについて

良いか悪いかは別として、楽な開発環境を作る上でrsyncによるシンジケートは重宝する。
ローカル自鯖をマスター、プロバイダ鯖をスレーブと位置付けて設定していく。
まずは両サーバともにrsyncが入っているか確認。

$ rpm -q rsync

うちの場合は
マスター

rsync-2.6.8-3.1

スレーブ

rsync-2.6.3-1

が入っていることを確認した。


次に、両サーバの同期ディレクトリを特定する。
マスター

/tmp/ideo_from/

スレーブ

/tmp/ideo_to/

と適当にディレクトリを作成した。
プロバイダなのに/tmpに作れるのかよという突っ込みには目もくれず進めていく。

まずは簡単に手動実行。

rsync -avz -e ssh /tmp/ideo_from/ スレーブ鯖FQDN:/tmp/ideo_to

上記例の場合スレーブ鯖のユーザを指定していないので、マスター鯖にログインしているユーザアカウントをスレーブにいるかのように振舞うが、もちろんそんなわけがないので

rsync -avz -e ssh /tmp/ideo_from/ ユーザ名@スレーブ鯖FQDN:/tmp/ideo_to

とすれば特定ユーザで転送を行うことができる。

これをパスフレーズレスにするには以下のようにすればよい。

  1. マスター鯖で cd ~
  2. マスター鯖で ssh-keygen -t dsa
  3. パスフレーズは何も入れないでEnter
  4. マスター鯖で ssh-copy-id -i .ssh/id_dsa.pub スレーブ鯖ユーザID@スレーブ鯖FQDN

基本的にはこれで

rsync -avz -e ssh /tmp/ideo_from/ スレーブ鯖FQDN:/tmp/ideo_to

すればパスフレーズレスになる。
ただし当然のことながら、マスター鯖で上記命令を実行するユーザと、同期先スレーブ鯖のユーザが一致していないとパスワードは聞かれる。

なのでcron化する場合には、実行ユーザをどのように指定するかが大事と思われる。

参考サイト