rsync専用の秘密鍵を使ってサーバ間でrsyncする

目的

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

前提

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

手順

ローカルサーバでパスフレーズなしの秘密鍵・公開鍵を作る

鍵のファイル名はわかりやすくしておく。

 ssh-keygen -t rsa -N '' -f id_rsa_for_backup

リモートサーバに公開鍵を登録する

authorized_keysファイルは以下のようになる。

 ssh-rsa AAAA123467890abcdefegAbcdefg123467890abcdefegAbcdefg
 123467890abcdefegAbcdefg123467890abcdefegAbcdefg== taro@local-server.FOR.BACKUP

ローカルサーバでrsyncを試す

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コマンドはオプションまで含めて正確でなければならない。例えば、別のディレクトリを指定するrsyncも実行したい場合は、そのコマンド用の鍵の登録を別に行う。

リモートサーバのauthorized_keysにcommandを指定する

上で確認できたrsyncコマンドの全文を正しく、command=""に記述する。

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

正しくrsync出来ているか確認する

以下のようにローカールサーバから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

Last-modified: 2016-04-26 (火) 18:46:32