rsyncで差分や同期の仕組み作り!sshオプションなど

こんにちは、ウェブラバーです。

ssh経由でrsyncを利用する際に、ssh鍵認証かつsshポート22以外に接続する方法をご存知ですが、費用が掛かるツールは導入できないけど、サーバ間で同期をとるためには何かと必要になる場面があるかと思います。

同期のコマンド

rsync -avz -e “ssh -p SSHポート番号 -i SSH秘密鍵ファイルパス” 送信元 username@hostname:~/dest/

例)
rsync -avz -e “ssh -p 2345 -i /c/sshkey/id_rsa” /c/develop/src/ hoge@192.168.1.10:~/dest/

公開鍵をリモート環境に保存、ローカルの秘密鍵とリモートの公開鍵で認証を行うので、ネットワーク上にパスワードが流れることがなく、セキュリティリを高めることができます。

ローカルサーバでの設定で何かする必要はあるか?

ローカルで秘密鍵と公開鍵のペアを生成し公開鍵をリモートに保存します。
リモートで鍵を生成し、秘密鍵をローカルに転送することも可能ですが、転送中に秘密鍵が漏れると、
公開鍵認証の意味がなくなってしまうので、ローカル側で生成したものを使用するようにします。

リモートのユーザー名 : hoge
リモートのホスト名 : example.com
リモートのディレクトリ名 : /home/hoge/
リモートのSSHポート番号 : 20022
ローカル側で秘密鍵と公開鍵のペアを生成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #「Enter」を押す
Enter passphrase (empty for no passphrase): # 秘密鍵のパスフレーズを入力
Enter same passphrase again: # もう一度

他のユーザーに見られないようにパーミッションを変更

$ chmod 600 .ssh/id_rsa

リモートに公開鍵を転送

$ scp -P 20022 .ssh/id_rsa.pub hoge@example.com:/home/hoge/.ssh/
hoge@example.com’s password: # リモートのパスワードを入力

リモートサーバでの設定で何かする必要はあるか?

他のユーザーに見られないようにパーミッションを変更(未設定の場合)
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
転送されてきた公開鍵をリネーム
$ mv .ssh/id_rsa.pub .ssh/authorized_keys
既に他のホストの公開鍵が設定されている場合はリネームでなく追記する
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ rm .ssh/id_rsa.pub

ついでにrsyncを使う場合の方法も記しておきます。rsyncはファイルやディレクトリを転送するためのコマンドです。リモートのファイルやディレクトリをローカルに転送したり、ローカルのファイルやディレクトリをリモートに転送することができるので、バックアップ作業を行うときに活躍します。

書式 : rsync [オプション] 転送元 転送先
ローカルのファイルをリモートに転送する場合
ローカルのディレクトリ : /home/backup/backup.gzip
リモートのユーザ名 : hoge
リモートのホスト名 : example.com
リモートの転送先ディレクトリ : /home/hoge/backup/
$ rsync -avz /home/backup/backup.gziphoge@example.com:/home/hoge/backup/
ポート番号が標準の22以外の場合
$ rsync -avze “ssh -p ポート番号” /home/backup/backup.gziphoge@example.com:/home/hoge/backup/

(Visited 23 times, 1 visits today)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする