|   | 15 |   | 
                  
                          |   | 16 | == セキュリティの強化 ==  | 
                  
                          |   | 17 | rsyncの実行のみリモートユーザに許可して、セキュリティを強化することができる。  | 
                  
                          |   | 18 |   | 
                  
                          |   | 19 | === 鍵作成 ===  | 
                  
                          |   | 20 | {{{  | 
                  
                          |   | 21 | [root@desthost ~]# ssh-keygen -f rsynckey -t rsa -b 4096 -C "youname@hoge.com"  | 
                  
                          |   | 22 | Generating public/private rsa key pair.  | 
                  
                          |   | 23 | Enter passphrase (empty for no passphrase):  | 
                  
                          |   | 24 | Enter same passphrase again:  | 
                  
                          |   | 25 | Your identification has been saved in rsynckey.  | 
                  
                          |   | 26 | Your public key has been saved in rsynckey.pub.  | 
                  
                          |   | 27 | The key fingerprint is:  | 
                  
                          |   | 28 | SHA256:UEcdnGoXW4E6jyjBkm71U1bbyx2mVj1T6q4tCkal7eo youname@hoge.com  | 
                  
                          |   | 29 | The key's randomart image is:  | 
                  
                          |   | 30 | +---[RSA 4096]----+  | 
                  
                          |   | 31 | |        ..oo.+.. |  | 
                  
                          |   | 32 | |       . .  B . .|  | 
                  
                          |   | 33 | |     o.   .+ * .o|  | 
                  
                          |   | 34 | |    o +. +B + o*.|  | 
                  
                          |   | 35 | |   . o oS=.= o+o+|  | 
                  
                          |   | 36 | |    o ..+.. .o+ .|  | 
                  
                          |   | 37 | |   .   .o.. ..   |  | 
                  
                          |   | 38 | |       . o  ...  |  | 
                  
                          |   | 39 | |       .E ...o.  |  | 
                  
                          |   | 40 | +----[SHA256]-----+  | 
                  
                          |   | 41 | [root@desthost ~]# ls  | 
                  
                          |   | 42 | anaconda-ks.cfg  rsynckey  rsynckey.pub  | 
                  
                          |   | 43 | }}}  | 
                  
                          |   | 44 |   | 
                  
                          |   | 45 | == バックアップ元に鍵を配置  | 
                  
                          |   | 46 |   | 
                  
                          |   | 47 | SSHでログインできるようにする。  | 
                  
                          |   | 48 | {{{  | 
                  
                          |   | 49 | [root@srchost ~]# adduser rsync-user  | 
                  
                          |   | 50 | [root@srchost ~]# cd /home/rsync-user/  | 
                  
                          |   | 51 | [root@srchost rsync-user]# mkdir .ssh  | 
                  
                          |   | 52 | [root@srchost rsync-user]# chmod 700 .ssh/  | 
                  
                          |   | 53 | [root@srchost rsync-user]# mv /root/rsynckey.pub .ssh/authorized_keys  | 
                  
                          |   | 54 | [root@srchost rsync-user]# chown rsync-user.rsync-user -R .ssh/  | 
                  
                          |   | 55 | [root@srchost rsync-user]# restorecon -R .ssh/  | 
                  
                          |   | 56 | }}}  | 
                  
                          |   | 57 |   | 
                  
                          |   | 58 | == バックアップ先  | 
                  
                          |   | 59 |   | 
                  
                          |   | 60 | 鍵認証でログインできるか確認確認  | 
                  
                          |   | 61 |   | 
                  
                          |   | 62 | {{{  | 
                  
                          |   | 63 | [root@desthost ~]# ssh -i rsynckey rsync-user@192.168.1.155  | 
                  
                          |   | 64 | [rsync-user@srchost ~]$  | 
                  
                          |   | 65 | }}}  | 
                  
                          |   | 66 |   | 
                  
                          |   | 67 | == 鍵認証でrsyncが動作するか確認  | 
                  
                          |   | 68 | {{{  | 
                  
                          |   | 69 | [root@desthost ~]# sync -vvv -PSavz --delete --bwlimit=500 -e "ssh -i /root/rsynckey"  rsync-user@srchost:/var/www/html/mariadb /var/www/html  | 
                  
                          |   | 70 | opening connection using: ssh -i rsynckey -l rsync-user srchost rsync --server --sender -vvvlogDtprSze.iLsf --bwlimit=500 . /var/www/html/mariadb  | 
                  
                          |   | 71 | receiving incremental file list  | 
                  
                          |   | 72 | server_sender starting pid=1439  | 
                  
                          |   | 73 | [sender] make_file(mariadb,*,0)  | 
                  
                          |   | 74 | recv_file_name(mariadb)  | 
                  
                          |   | 75 | received 1 names  | 
                  
                          |   | 76 | ...  | 
                  
                          |   | 77 | generate_files finished  | 
                  
                          |   | 78 |   | 
                  
                          |   | 79 | sent 92 bytes  received 6075 bytes  12334.00 bytes/sec  | 
                  
                          |   | 80 | total size is 206849027  speedup is 33541.27  | 
                  
                          |   | 81 | [generator] _exit_cleanup(code=0, file=main.c, line=1518): about to call exit(0)  | 
                  
                          |   | 82 |   | 
                  
                          |   | 83 | }}}  | 
                  
                          |   | 84 |   | 
                  
                          |   | 85 | == rsyncのみの実行に絞る絞る  | 
                  
                          |   | 86 | セキュリティの観点では、sshで全ての実行を可能とするのはよろしくない。sshの接続にのみ絞るには、上記rsyncを実行した結果を利用する。  | 
                  
                          |   | 87 |   | 
                  
                          |   | 88 | opening connection using: ssh -i rsynckey -l rsync-user srchost **rsync --server --sender -vvvlogDtprSze.iLsf --bwlimit=500 . /var/www/html/mariadb**  | 
                  
                          |   | 89 |   | 
                  
                          |   | 90 | == エラー処理について  | 
                  
                          |   | 91 | エラー発生時のエラーコード(echo $?)の値は、下記の通り。  | 
                  
                          |   | 92 |   | 
                  
                          |   | 93 | * 転送中ののネットワーク切断: 12  | 
                  
                          |   | 94 | * サーバ側rsyncプロセスのクラッシュ: 22  | 
                  
                          |   | 95 | * sshが繋がらない: 255   | 
                  
                          |   | 96 |   | 
                  
                          |   | 97 | === ネットワーク切断  | 
                  
                          |   | 98 | {{{  | 
                  
                          |   | 99 | [root@desthost ~]# rsync --timeout 60 -vv -PSavz --delete --bwlimit=500 -e "ssh -i rsynckey"  rsync-user@srchost:/var/www/html/mariadb /var/www/html  | 
                  
                          |   | 100 | ....  | 
                  
                          |   | 101 |   | 
                  
                          |   | 102 | [receiver] io timeout after 60 seconds -- exiting  | 
                  
                          |   | 103 | set uid of mariadb/rpms/.MariaDB-10.1.29-centos7-x86_64-backup.rpm.NPdON0 from 0 to 48  | 
                  
                          |   | 104 | set gid of mariadb/rpms/.MariaDB-10.1.29-centos7-x86_64-backup.rpm.NPdON0 from 0 to 48  | 
                  
                          |   | 105 | renaming mariadb/rpms/.MariaDB-10.1.29-centos7-x86_64-backup.rpm.NPdON0 to mariadb/rpms/MariaDB-10.1.29-centos7-x86_64-backup.rpm  | 
                  
                          |   | 106 | rsync error: timeout in data send/receive (code 30) at io.c(140) [receiver=3.0.9]  | 
                  
                          |   | 107 | [receiver] _exit_cleanup(code=30, file=io.c, line=140): about to call exit(30)  | 
                  
                          |   | 108 | rsync: connection unexpectedly closed (82 bytes received so far) [generator]  | 
                  
                          |   | 109 | rsync error: error in rsync protocol data stream (code 12) at io.c(605) [generator=3.0.9]  | 
                  
                          |   | 110 | [generator] _exit_cleanup(code=12, file=io.c, line=605): about to call exit(12)  | 
                  
                          |   | 111 | [root@localhost ~]# echo $?  | 
                  
                          |   | 112 | 12  | 
                  
                          |   | 113 | }}}  | 
                  
                          |   | 114 |   | 
                  
                          |   | 115 | === ssh不通  | 
                  
                          |   | 116 | {{{  | 
                  
                          |   | 117 | [root@localhost ~]# rsync --timeout 60 -vv -PSavz --delete --bwlimit=500 -e "ssh -i rsynckey"  rsync-user@srchost:/var/www/html/mariadb /var/www/html  | 
                  
                          |   | 118 | opening connection using: ssh -i rsynckey -l rsync-user srchost rsync --server --sender -vvvlogDtprSze.iLsf --timeout=60 --bwlimit=500 . /var/www/html/mariadb  | 
                  
                          |   | 119 | ssh: connect to host srchost port 22: No route to host  | 
                  
                          |   | 120 | rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]  | 
                  
                          |   | 121 | rsync error: unexplained error (code 255) at io.c(605) [Receiver=3.0.9]  | 
                  
                          |   | 122 | [Receiver] _exit_cleanup(code=12, file=io.c, line=605): about to call exit(255)  | 
                  
                          |   | 123 | [root@localhost ~]# echo $?  | 
                  
                          |   | 124 | 255  | 
                  
                          |   | 125 | }}}  | 
                  
                          |   | 126 |   | 
                  
                          |   | 127 | === rsyncプロセスの死亡  | 
                  
                          |   | 128 | {{{  | 
                  
                          |   | 129 | rsync: connection unexpectedly closed (9162874 bytes received so far) [receiver]  | 
                  
                          |   | 130 | set uid of mariadb/rpms/.MariaDB-10.1.29-centos7-x86_64-backup.rpm.ipt9fC from 0 to 48  | 
                  
                          |   | 131 | set gid of mariadb/rpms/.MariaDB-10.1.29-centos7-x86_64-backup.rpm.ipt9fC from 0 to 48  | 
                  
                          |   | 132 | renaming mariadb/rpms/.MariaDB-10.1.29-centos7-x86_64-backup.rpm.ipt9fC to mariadb/rpms/MariaDB-10.1.29-centos7-x86_64-backup.rpm  | 
                  
                          |   | 133 | rsync error: error in rsync protocol data stream (code 12) at io.c(605) [receiver=3.0.9]  | 
                  
                          |   | 134 | [receiver] _exit_cleanup(code=12, file=io.c, line=605): about to call exit(12)  | 
                  
                          |   | 135 | rsync: connection unexpectedly closed (82 bytes received so far) [generator]  | 
                  
                          |   | 136 | rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at io.c(605) [generator=3.0.9]  | 
                  
                          |   | 137 | [generator] _exit_cleanup(code=12, file=io.c, line=605): about to call exit(20)  | 
                  
                          |   | 138 | [root@localhost ~]# echo $?  | 
                  
                          |   | 139 | 20  | 
                  
                          |   | 140 | }}}  |