- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- UNIX/rsync/rsync専用の秘密鍵を使ってサーバ間でrsyncする へ行く。
- 1 (2008-12-14 (日) 13:34:56)
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コマンド。
リモートサーバの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