xserverをメインとして使っているブロガーはたくさんいると思いますが、少し高価なので筆者はステージングサーバーとして、coreserverも使っています。本記事では、このxserverとcoreserverをrsyncで同期する方法を扱っています。
rsyncは、サーバー間で同期するためのLinuxコマンドです。今回のような本番前の直前環境(ステージング環境)を同期するために使いたい。ただxserverやcoreserverの癖のようなもので少々苦労してしまいました。同様の問題を抱えている読者諸氏のためにその方法を記載しました。少しでもお役に立てればと思います.環境の説明
- 公開鍵と秘密鍵の準備
- SSH接続の設定
- rsync接続
公開鍵と秘密鍵の作成
今回必要な認証方式として、公開鍵方式を使っています。これは公開鍵と秘密鍵のペアを作成して、安全にサーバーに接続するために採用します。 公開鍵は認証するサーバー上に配置し、秘密鍵は接続ユーザー側で使用します。このペアは、Linuxサーバー上でssh-keygenコマンドを使って作成します。 まず、次にようにコマンドを打ち込んでください。ssh-keygen -t rsa -f id_rsa
実行結果は以下のようになります。ファイル名は、簡易的にtmp_rsaとして作成しました。カレントディレクトリに、tmp_rsaとtmp_rsa.pubのペアが出来ますが、tmp_rsaが秘密鍵でtmp_rsa.pubが公開鍵になります。

xserverは、パスワードなしの公開鍵は作れないとの噂がありますが、そんなことはありません。上記の方法でパスワードなしの公開鍵が作れます
SSH接続の設定
公開鍵をサーバーに配置
上記の例で作成した公開鍵”tmp_rsa.pub”は、認証するサーバーのルートにある.sshフォルダーのauthorized_keysにコピーします。もし既にauthorized_keysがある場合は、下記のようにして追加し、既存の設定を上書きしないようにしてください。
cat tmp_rsa.pub >> authorized_keys
※たぶん、ほとんどの場合は大丈夫だと思いますが、既存の設定との間に空行を1行設けてください。
ssh接続の確認
無事接続できるかどうかは、sshコマンドで確認することが出来ます。まず、上記の秘密鍵を手元にダウンロードしておいてください。 下記のコマンドを接続する端末に入力してください。ssh -p 10022 -i rsa_tmp userid@sv9999.xserver.jpp
説明)
-p : 使用するsshポートを指定します。xserverのsshポートは10022なのでこのように指定します。
-i : 作成した秘密鍵(公開鍵ではない)を指定します。
userid : ログインするユーザーアカウントを指定します
sv9999.xserver.jp:認証するxserverのサーバー名を指定します。
※サーバー指定は、上記のようにユーザーアカウントとサーバー名を@でつないで指定します。
-iパラメータで指定する秘密鍵ファイルを、公開鍵ファイルとしているブログが見受けられますが、接続する側で使うファイルは、秘密鍵の方です。間違わないように注意してください。
“WARNING: UNPROTECTED PRIVATE KEY FILE!”というエラーが発生する場合
上記のエラーは、秘密鍵ファイルのパーミッションを設定していない場合に発生します。この場合は以下のコマンドで適切なパーミッションを設定してください。chmod 600 tmp_rsa
rsync接続
ここまで順調であれば、もう既にrsyncコマンドはつかえる状態です。 rsyncコマンド概要は
rsync -auvz -delete -e ‘ssh -p 10022 -i tmp_rsa’ (送信フォルダ) (受信フォルダ)
※送信フォルダ、受信フォルダともローカルでも他サーバーのどちらでも構いません。ただし、間違って指定すると全部ファイルを失う結果にもなりますので、慎重に設定してください。
なお、rsyncコマンドについては以下の記事を参考にされると良いかと思います.
https://orebibou.com/2015/06/rsync%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E4%BD%BF%E3%81%84%E6%96%B910%E5%80%8B/
今回紹介したのは、coreserverからxserverへssh接続する場合です。この逆の場合は不可です。それはcoreserverのssh接続は限定した端末からしか接続出来ないからです。ご注意を!
以上