PSLブログ

ヨシナシゴトヲツヅリマス

rsyncの公開鍵認証(パスワードなし)

最近twitterをはじめてみた。サイトトップとこのブログのサイドに、最新の1件分だけを表示するようにしてみた。1行くらいだと気軽に書ける。そうすると、ガス抜きされてこのブログになおさら書かなくなってしまう。もっともこのブログは主にPerlの技術的なことを中心に書こうと思っているのだが。

ところで、rsyncの公開鍵認証である。rsyncとは、リモートサーバにディレクトリごとファイルを送れたり、同期したりできる便利なものだが、ベースにsshを使っているため、送信先サーバに接続する際にログインが必要になる。今抱えている案件で、DMZに置いた内部サーバにCMSを置き、公開用ページを書き出して、公開サーバに送るという仕組みを作っているが、rsyncによる送信を自動化したい。とするとパスワードを入れなければならないのでは実現できない。sshは公開鍵によるログインができるので、その設定をしていた。

(1)内部サーバで、~/.sshを作成し、パーミッションを700に。 (2)ssh-keygen -t rsaを実行して秘密鍵/公開鍵のペアを作成。 (3)公開サーバで、~/.sshを作成し、パーミッションを700に。 (4)~/.ssh/authorized_keysに(2)で作成したid_rsa.pubの中身をappend。 (5)内部サーバにて ssh [外部サーバのユーザ名]@[外部サーバのホスト名]を実行すると、初回のみ確認メッセージが出るが、2回目からはOK。パスワードを聞かれない (6)内部サーバにてrsyncコマンドをcrontabに設定して定期実行させる。

とまとめると簡単なのだが、どういう訳か、鍵の生成の時、-fオプションを使ってファイル名を指定していたおかげで、rsync実行時(ssh接続時)にパスワード認証になってしまいとてもはまった。/etc/ssh/ssh_configを眺めていて、鍵のファイル名を見つけられないのが原因であることに気づいてよかった。