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 |
|