Web Digest

还有众多网络文摘,仅供个人收藏和参考

Posts Tagged ‘windows

利用cwrsync同步ubuntu上的文件至Windows,基于SSH方式

leave a comment »

1. 在ubuntu上添加一个专门用于同步的用户组,root的权限太大,不建议对SSH开放。由于为了方便,rsync将使用不带密码的私钥进行登录验证,权限越低越好

groupadd remote-backup
useradd -c “account for rsync” -d /home/remote-backup/ -s /bin/sh -m -g remote-backup

2. 利用cwrsync或putty产生一对密钥:

1) 使用cwrsync所带的ssh-keygen

ssh-keygen -q -b 2048 -t rsa -f cwrsync -N ”

将会产生不带密码的私钥cwrsync和公钥cwrsync.pub。把cwrsync.pub用加密的ftp上传到服务器上,放在/home/remote-backup下。

2)或者用puttygen,产生一对私钥和公钥,同样将公钥利用加密的ftp上传到服务器上,并执行ssh-keygen -if putty.key.pub > key.pub,将其转化为Openssh格式的。对于本地机器上的私钥,也要重新输出成为openssh格式的,并放到cwrsync的程序目录下。

3)编辑服务器上的公钥:

在ssh-dss前,加上这两句,如果本地电脑是动态IP,那就把from那句去掉

from=”10.1.1.1″,command=”/home/remote-backup/validate-rsync.sh” ssh-dss AAAAB3Nza
C1kc3MAAAEBAKYJenaYvMG3nHwWxKwlWLjHb77CT2hXwmC8Ap+fG8wjlaY/9t4uA+2qx9JNorgdrWKhH
SKHokFFlWRj+qk3q+lGHS+hsXuvta44W0yD0y0sW62wrEVegz+JVmntxeYc0nDz5tVGfZe6ydlgomzj1
bhfdpYe+BAwop8L+EMqKLS4iSacNjoPlHsmqHMnbibn3tBqJEq2QJjEPaiYj1iP5IaCuYBhuTKQGa+oy
H3mXEif5CKdsIKBj46B0tCy0/GC7oWcUN92QdLrUyTeRJZsTWsxKpRbMliD2pBh4oyX/aXEf8+HZBrO5
vQjDBCfTFQA+35Xrd3eTVEjkGkncI0SAeUAAAAVAMZSASmQ9Pi38mdm6oiVXD55Kk2rAAABAE/bA402V
uCsOLg9YS0NKxugT+o4UuIjyl6b2/cMmBVWO39lWAjcsKK/zEdJbrOdt/sKsxIK1/ZIvtl92DLlMhci5
c4tBjCODey4yjLhApjWgvX9D5OPp89qhah4zu509uNX7uH58Zw/+m6ZOLHN28mV5KLUl7FTL2KZ583Kr
cWkUA0Id4ptUa9CAkcqn/gWkHMptgVwaZKlqZ+QtEa0V2IwUDWS097p3SlLvozw46+ucWxwTJttCHLzU
mNN7w1cIv0w/OHh5IGh+wWjV9pbO0VT3/r2jxkzqksKOYAb5CYzSNRyEwp+NIKrY+aJz7myu4Unn9de4
cYsuXoAB6FQ5I8AAAEBAJSmDndXJCm7G66qdu3ElsLT0Jlz/es9F27r+xrg5pZ5GjfBCRvHNo2DF4YW9
MKdUQiv+ILMY8OISduTeu32nyA7dwx7z5M8b+DtasRAa1U03EfpvRQps6ovu79mbt1OE8LS9ql8trx8q
yIpYmJxmzIdBQ+kzkY+9ZlaXsaU0Ssuda7xPrX4405CbnKcpvM6q6okMP86Ejjn75Cfzhv65hJkCjbiF
7FZxosCRIuYbhEEKu2Z9Dgh+ZbsZ+9FETZVzKBs4fySA6dIw6zmGINd+KY6umMWyJNej2Sia70fu3XLH
j2yBgN5cy8arlZ80q1Mcy763RjYGkR/FkLJ611HWIA=

然后在/home/remote-backup下创建.ssh目录,把上面的公钥重命名为authorized_keys, 存放在.ssh下。

并确保.ssh是755, authorized_keys是644的属性。(假设其owner都是root, 如果是remote-backup自己的话,那权限就是700和600了)

4)编辑/home/remote-backup/validate-rsync.sh脚本,输入以下内容:

#!/bin/sh

case “$SSH_ORIGINAL_COMMAND” in
*\&*)
echo “Rejected”
;;
*\(*)
echo “Rejected”
;;
*\{*)
echo “Rejected”
;;
*\;*)
echo “Rejected”
;;
*\<*)
echo “Rejected”
;;
*\`*)
echo “Rejected”
;;
*\|*)
echo “Rejected”
;;
rsync\ –server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo “Rejected”
;;
esac

这个脚本可以确保以remote-backup身份登录的的用户,只能执行rsync这个命令,任何其他登录都会直接被切断。

chmod +x ./validate-rsync.sh

然后试运行一下,确保没有语法错误

3. 配置cwrsync:

将私钥放在程序目录下,和cwrsync.cmd在一起,,否则cwRsync会认为该私钥是共享的,需要600的权限,在Windows Xp下不好改。编辑cwrsync.cmd,在末尾加入

rsync -av -e “ssh -i cwrsync.key” remote-backup@mysite.com:/var/backup  /cygdrive/c/localbackup/

然后在命令行模式下运行cwrsync.cmd。第一次系统会提示,是否要将远程主机添加到信任列表中,选择yes。

然后就可以看到同步进行了。

成功后,可以在cwrsync.cmd中的v参数换成q,即rsync -aq ……。省去屏幕输出。

最后把cwrsync加入计划任务就可以定时同步了。

说明:通过ssh方式连接,就不在需要配置rsync daemon了。优点是所有传输内容都是保密的,缺点是尽管做了以上种种限制,resync还是可以看到全局的文档。一旦私钥被窃,别人是可以复制整个服务器上的文档。由于私钥是未加密码的,私钥的安全就很重要。所以本机的安全也就成了保护私钥安全的关键屏障。

只是考虑到,如果连rsync上的文档都被窃取了,服务器上的其他文档的重要性都还没有能跟他相比的,所以这个漏洞的意义不太大,也就不在进一步研究基于Openssh的chroot等方面的限制了。无论如何,采用私钥加密的方式,私钥和本机的安全是一定要注意的,建议要给Windows也设定一个非常安全的密码。

rsync配置成Daemon的话,还可以进一步参考这篇文章,里面介绍了rsync.conf的参数设定及其含义,DBA Note对公钥,私钥的认证过程也有简单的解释多台window电脑间的同步也可以用rsync。

此外,更高级的使用方法,还有和inotify结合,当目标目录方式更新后,就主动同步。

本文主要参考文档:

Using Rsync and SSH

Written by admin

November 16, 2009 at 10:18 am

Posted in 网站|Site

Tagged with , ,