rootでSSHしたくないときのrsync
こんにちは
webデータ等をsshを利用してデータを転送するとユーザ権限絡みの問題が発生することは多いと思います。
[root@aws01 ~]# rsync -avz -e "ssh -i ~/.ssh/aws02.id_rsa" /var/www/html/test001.html test02@192.168.2.84:/var/www/html sending incremental file list test001.html rsync: mkstemp "/var/www/html/.test001.html.FG4708" failed: Permission denied (13) sent 99 bytes received 122 bytes 147.33 bytes/sec total size is 4 speedup is 0.02 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
でもroot ではポリシー的な事情でSSHしたくないってとき、いくつか方法はあると思いますが、今回はrsyncdのPROXYを使う方法を紹介したいと思います。
rsyncd側の設定をぱぱっと書きます。
rootで起動させる必要があります。
[root@aws02 ~]# vi /etc/rsyncd.conf [root@aws02 ~]# cat /etc/rsyncd.conf uid = root gid = root read only = no transfer logging = yes log file = /var/log/rsyncd/rsyncd.log pid file = /var/run/rsyncd.pid use chroot = no [web] path = /var/www/html hosts allow = localhost 192.168.1.0/24 hosts deny = * read only = false
起動させます。
[root@aws02 ~]# systemctl start rsyncd
ncコマンドを利用できるようにします。
[root@aws01 ~]# yum install nc [root@aws02 ~]# yum install nc
sshconfigでSSHログインできるようにします。
[root@aws01 ~]# vi .ssh/config Host aws02 hostname 192.168.2.84 user test02 identityfile ~/.ssh/aws02.id_rsa
bash_profileにRSYNC_CONNECT_PROG の変数を追加して、
再ログインします。
[root@aws01 ~]# vi .bash_profile export RSYNC_CONNECT_PROG='ssh aws02 nc %H 873'
環境変数を確認します。
[root@aws01 ~]# echo $RSYNC_CONNECT_PROG ssh aws02 nc %H 873
転送します。
[root@aws01 ~]# rsync -avz /var/www/html/ localhost::web sending incremental file list ./ test001.html
転送されていることを確認します。
[root@aws02 ~]# ll /var/www/html/ total 0 -rw-r--r-- 1 root root 0 Feb 3 07:38 test001.html
転送されていればOKです。
セキュリティ関連の課題はいろいろあると思いますが、選択肢の1つとして参考になれば幸いです。