テストサーバから本番サーバへ反映させるのにrsnycを使ってやることにしました。
ただし、毎回毎回コマンドを叩くのもアレなのでwebで出来るようにphp経由でコマンドを叩くことにしました。
※php自体はテスト側に置いてあります。
【SSH認証でやってみようとする】
まずはsshの鍵の受け渡しをすることでパスワードなしでログイン出来るようにする。
コマンドライン経由でrsyncのテストをしたところ、本番サーバへのログインパスワードをきかれたので、なしで出来るようにしようと思いました。
テスト側でパスワードなしで公開鍵/秘密鍵を作って公開鍵を本番サーバに送ります。
互いのユーザ名は同じで、noocooとします。
[noocoo]$ ssh-keygen -t rsa
でenter三回くらい。パスワードは空で。
で、本番側の所定ユーザのauthorized_keysに鍵の内容を追加。
[noocoo]$ scp ./id_rsa.pub noocoo@honban_hostname:/home/noocoo/.ssh/authorized_keys
これでうまくいくはず、と思ったけど、まだパスワードを聞かれる。
なので、今度は本番側のsshdの設定をチェック。
[noocoo]$ su -
[root]# cd /etc/ssh
[root]# vi sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
RSAAuthentication yes
※上記3つのコメントアウトを外しsshdを再起動。
[root]# service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
これでパスワードなしでsshログイン出来ました。


次に、php側にrsyncスクリプトを作って実行したところエラーをはきます。
Could not create directory '/.ssh'
色々調べたら実行ユーザが違う(nobodyとかapacheとか?)ということなので、/.sshを作成してnoocooの鍵を置いてみたりしたけど駄目。
nobodyとapacheで鍵を作ろうかと思ったけど、そもそもログイン出来るユーザじゃないみたいで、そこら辺調べるのも面倒になってきて方針を変えました。
【rsh-serverを使ってみる】
結論、出来た。さらっと出来たのでもうメモみたいな感じで。
[root]# chkconfig --list
[root]# up2date rsh-server
[root]# chkconfig rsh on
[root]# chkconfig rsync on
[root]# vi /etc/hosts.equiv
test nobody
これで終わり。
ssh認証を使ってどうしてもやりたいなぁと思っていたので、どうやって鍵を渡してやろうかってところでずーと悩んでました。