* rsync専用の秘密鍵を使ってサーバ間でrsyncする [#o86c6ca5]

** 目的 [#vd990bf4]
rsyncを使い、リモートサーバからローカルサーバへファイルをコピーする。rsyncはSSH経由とするが、パスフレーズなしにしてセキュリティを弱める代わりに、任意のコマンドを実行できないようにする。rsyncでファイルコピーするためだけの秘密鍵を使ってSSH接続することにする。

** 前提 [#he832df9]
rsyncコマンドをSSH経由でサーバ間で実行する場合、ローカルサーバでrsyncコマンドを実行後、自動的にリモートサーバでもrsyncコマンドが実行される。2つのrsyncコマンドが通信することで、ファイルのコピーが行われる。

** 手順 [#e0717670]
*** ローカルサーバでパスフレーズなしの秘密鍵・公開鍵を作る [#x4e6493f]
鍵のファイル名はわかりやすくしておく。
 ssh-keygen -t rsa -N '' -f id_rsa_for_backup

*** リモートサーバに公開鍵を登録する [#fc114c75]
authorized_keysファイルは以下のようになる。
 ssh-rsa AAAA123467890abcdefegAbcdefg123467890abcdefegAbcdefg
 123467890abcdefegAbcdefg123467890abcdefegAbcdefg== taro@local-server.FOR.BACKUP

*** ローカルサーバでrsyncを試す [#y08aa3a0]
vvオプションをつけるのがポイント。
 rsync -azvv -e 'ssh -i /home/taro/.ssh/id_rsa_for_backup' remote-server.net:tmp/ /home/taro/tmp/
すると、次のようにリモートサーバで実行されるrsyncコマンドを確認出来る。
 opening connection using ssh -i /home/taro/.ssh/id_rsa_for_backup remote-server.net rsync --server --sender -vvlogDtprz . tmp/ 
 receiving file list ... 
「rsync --server」以降がリモートサーバで実行されるrsyncコマンド。
「rsync --server」以降がリモートサーバで実行されるrsyncコマンド。なお、このrsyncコマンドはオプションまで含めて正確でなければならない。例えば、別のディレクトリを指定するrsyncも実行したい場合は、そのコマンド用の鍵の登録を別に行う。

*** リモートサーバのauthorized_keysにcommandを指定する [#k6ea6c3c]
上で確認できたrsyncコマンドの全文を正しく、command=""に記述する。

 command="rsync --server --sender -vvlogDtprz . tmp/" ssh-rsa AAAA123467890abcdefegAbcdefg123467890
 abcdefegAbcdefg123467890abcdefegAbcdefg123467890abcdefegAbcdefg== taro@localserver.FOR.BACKUP

*** 正しくrsync出来ているか確認する [#x6af5bab]
以下のようにローカールサーバからrsyncコマンドを実行して、ファイルがコピーされたか確認する。
 rsync -az -e 'ssh -i /home/taro/.ssh/id_rsa_for_backup' remote-server.net:tmp/ /home/taro/tmp/
また、次のように、シェルログインなど、rsyncコマンド実行以外のSSH接続は出来ないことを確認する。
 ssh -v -i /home/taro/.ssh/id_rsa_for_backup remote-server.net

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS