登場するサーバは以下の2台
クライアント:ファイルをrsyncでサーバへ送る側
サーバ:クライアントよりrsyncで送られたファイルを受信する側
今回は受信する側のアカウントをrsyncuserとして記述しています。
適宜ユーザを読み替えて作業をしてください。
rootユーザでサーバへログイン(必須ではありません)
まず、サーバ側へrsyncで利用するアカウントを作成する
# useradd rsyncuser
.sshディレクトリの作成
# cd /home/rsyncuser
# mkdir .ssh
ルートで作成したので、ディレクトリのオーナーの変更
# chown rsyncuser.rsyncuser .ssh
他のユーザで読み書きが出来ないように.sshディレクトリのパーミッションの変更
# chmod 700 .ssh
authorized_keys ファイルが存在しない場合、ファイルを作成しておく。
# touch authorized_keys
ファイルオーナーの変更
# chown rsyncuser.rsyncuser authorized_keys
他のユーザで読み書きが出来ないようにパーミッションの変更
# chmod 600 authorized_keys
ここからクライアント側での作業。
rsyncを利用するアカウントでクライアントにログインする。
ユーザのホームディレクトリに移動
$ cd ~(チルダ)
.ssh ディレクトリがない場合、ディレクトリを作成する
$ mkdir .ssh
ディレクトリのパーミッションの変更
$ chmod 700 .ssh
.sshディレクトリ内に移動
$ cd .ssh
RSA鍵の作成を行う。
バッチで利用するため、パスフレーズ無しで作成する
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/{user}/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <= パスワードは入力しない
Enter same passphrase again: <= パスワードは入力しない
Your identification has been saved in /{user}/.ssh/id_rsa.
Your public key has been saved in /{user}/.ssh/id_rsa.pub.
The key fingerprint is:
d8:aa:8f:d1:f8:aa:49:fd:aa:a7:f5:da:aa:18:21:ea {user}@example.com
以上のような感じに入力し、秘密鍵[id_rsa], 公開鍵[id_rsa.pub] を作成する。
作成した公開鍵をサーバ側へ送信する
$ scp /{user}/.ssh/id_rsa.pub {user}@192.168.XXX.XXX:~(チルダ)
ここからサーバ側での作業
rsyncuserでログインを行い、公開鍵を登録する
$ cat id_rsa.pub >> /home/rsyncuser/.ssh/authorized_keys
これで鍵の登録は完了
ここからsshd_configの修正を行う。
サーバ側でrootアカウントにユーザを変更し、sshd_confの以下を修正する
# vi /etc/ssh/sshd_conf
---
Authentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
---
変更したらsshdを再起動する
# /etc/init.d/sshd restart
これで設定が全て完了、クライアントから接続のテストを行う
クライアント側にキーを作成したアカウントでログインを実施
(.sshディレクトリにid_rsaがあるアカウント)
sshの接続を確認する
$ ssh rsyncuser@192.168.XXX.XXX
これで接続ができれば鍵を利用したログインの設定が完了。
あとは以下のようなスクリプトを作成し、実行権限を付けてcronで実行すればOKです。
(バックアップ先のディレクトリの作成や、cronで実行する際のユーザに注意!)
---
#!/bin/sh
RSYNC='rsync -avvz'
HOST='rsyncuser@192.168.XXX.XXX'
$RSYNC $HOST:/var/log/httpd/ /home/rsyncuser/log/httpd
$RSYNC $HOST:/var/log/mysql/ /home/rsyncuser/log/mysql
---
クライアント:ファイルをrsyncでサーバへ送る側
サーバ:クライアントよりrsyncで送られたファイルを受信する側
今回は受信する側のアカウントをrsyncuserとして記述しています。
適宜ユーザを読み替えて作業をしてください。
rootユーザでサーバへログイン(必須ではありません)
まず、サーバ側へrsyncで利用するアカウントを作成する
# useradd rsyncuser
.sshディレクトリの作成
# cd /home/rsyncuser
# mkdir .ssh
ルートで作成したので、ディレクトリのオーナーの変更
# chown rsyncuser.rsyncuser .ssh
他のユーザで読み書きが出来ないように.sshディレクトリのパーミッションの変更
# chmod 700 .ssh
authorized_keys ファイルが存在しない場合、ファイルを作成しておく。
# touch authorized_keys
ファイルオーナーの変更
# chown rsyncuser.rsyncuser authorized_keys
他のユーザで読み書きが出来ないようにパーミッションの変更
# chmod 600 authorized_keys
ここからクライアント側での作業。
rsyncを利用するアカウントでクライアントにログインする。
ユーザのホームディレクトリに移動
$ cd ~(チルダ)
.ssh ディレクトリがない場合、ディレクトリを作成する
$ mkdir .ssh
ディレクトリのパーミッションの変更
$ chmod 700 .ssh
.sshディレクトリ内に移動
$ cd .ssh
RSA鍵の作成を行う。
バッチで利用するため、パスフレーズ無しで作成する
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/{user}/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <= パスワードは入力しない
Enter same passphrase again: <= パスワードは入力しない
Your identification has been saved in /{user}/.ssh/id_rsa.
Your public key has been saved in /{user}/.ssh/id_rsa.pub.
The key fingerprint is:
d8:aa:8f:d1:f8:aa:49:fd:aa:a7:f5:da:aa:18:21:ea {user}@example.com
以上のような感じに入力し、秘密鍵[id_rsa], 公開鍵[id_rsa.pub] を作成する。
作成した公開鍵をサーバ側へ送信する
$ scp /{user}/.ssh/id_rsa.pub {user}@192.168.XXX.XXX:~(チルダ)
ここからサーバ側での作業
rsyncuserでログインを行い、公開鍵を登録する
$ cat id_rsa.pub >> /home/rsyncuser/.ssh/authorized_keys
これで鍵の登録は完了
ここからsshd_configの修正を行う。
サーバ側でrootアカウントにユーザを変更し、sshd_confの以下を修正する
# vi /etc/ssh/sshd_conf
---
Authentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
---
変更したらsshdを再起動する
# /etc/init.d/sshd restart
これで設定が全て完了、クライアントから接続のテストを行う
クライアント側にキーを作成したアカウントでログインを実施
(.sshディレクトリにid_rsaがあるアカウント)
sshの接続を確認する
$ ssh rsyncuser@192.168.XXX.XXX
これで接続ができれば鍵を利用したログインの設定が完了。
あとは以下のようなスクリプトを作成し、実行権限を付けてcronで実行すればOKです。
(バックアップ先のディレクトリの作成や、cronで実行する際のユーザに注意!)
---
#!/bin/sh
RSYNC='rsync -avvz'
HOST='rsyncuser@192.168.XXX.XXX'
$RSYNC $HOST:/var/log/httpd/ /home/rsyncuser/log/httpd
$RSYNC $HOST:/var/log/mysql/ /home/rsyncuser/log/mysql
---












































