Answers:
sftp解决方案还需要每个人都使用ssh登录,因此您在这里并没有真正失去任何东西。授予ssh访问权限并不一定意味着完全的shell访问权限,例如,这显示了如何使用ssh authorized_keys
文件来允许通过rsync进行备份,同时将可用命令限制为仅 rsync接收器。
实际上,如果您选择基于密钥的身份验证,而不是密码身份验证(应该这样做),则可以在一个用户帐户下运行所有内容,而不需要多个帐户。您将使用密钥来标识远程用户,并将rsync接收器定向到特定目录。
在您的authorized_keys
文件中这样的内容:
command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1
command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2
使用user1
私钥的人将备份到/tmp/user1
,使用user2
私钥的人将备份到/tmp/user2
。依此类推...
rsync
从客户端到远程服务器执行通常的操作,但是添加其他详细开关:SSH -v
,然后添加grep Sending command
。您将看到客户端发送到远程服务器的确切命令:
rsync -avz -e'ssh -v -i /ssh-keys/clientprivate.key' --bwlimit=8000 --delete root@server:/path/ /backup/myserver/ 2>&1 | grep "Sending command"
就我而言,
rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /path
如@larsks所述,command="..."
将其添加到远程服务器/home/USER/.ssh/authorized_keys
文件中。如有必要,添加其他安全设置:
no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
全部一起:
command="rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /backup/path",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
(摘自非常好的教程http://en.positon.org/post/Rsync-command-restriction-over-SSH)
除非您直接连接到rsync服务器,否则您将需要提供某种形式的Shell访问才能使用rsync-默认端口为873(TCP)。
rsync与远程系统联系的方式有两种:使用远程shell程序作为传输工具(例如ssh或rsh)或直接通过TCP与rsync守护程序联系。只要源或目标路径在主机规范之后包含单个冒号(:)分隔符,就使用远程外壳传输。当源或目标路径在主机说明后包含双冒号(::)分隔符时,或者在指定rsync:// URL时,直接联系rsync守护程序(另请参见通过远程SHELL的lqUSING RSYNC-DAEMON功能) CONNECTIONrq部分中的内容除外)。
要提供有限的外壳访问权限,请考虑以下指南。(注意:原始链接已失效)摘要:
此设置结合了rsync,SSH和chroot的最佳功能。Rsync提供文件传输的灵活性和效率,SSH保护正在传输的数据,而chroot保护服务器上的数据免受未经授权的访问。dummysh将访问限制为仅rsync。
尽管rsync服务器实现chroot,但它缺少通常需要的SSH保护。此外,打开额外的rsync服务器端口会带来安全风险,有时在技术上或政治上都是不可能的。Sftp和scp缺乏rsync提供的灵活性和效率,尤其是在涉及目录树(例如网站)时。
rssh是与OpenSSH一起使用的受限外壳,仅允许使用scp和/或sftp。现在,它还支持rdist,rsync和cvs。例如,如果您有一台服务器,只希望允许用户通过scp复制文件,而不提供外壳程序访问权限,则可以使用rssh来做到这一点。
rrsync
代替rssh(包括在官方rsync软件包中)。请参阅derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshot
具有Rsync功能的SFTP,无外壳
您可以在chroot环境中使用LFTP + SFTP并获得与使用rsync相同的结果,而无需为用户提供外壳程序或在ssh中使用包装程序进行大量自定义。
这样更安全,并且可以更快。
Rsync进入chroot的过程很棘手 :)您需要在chrooted目录(目标端)内为/ bin / sh和/ usr / bin / rsync设置最小环境,以使其正常工作。
在此处查看整篇文章,rsync环境设置最终请参见
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5