rsync 文件到远程服务器

rsync 文件到远程服务器

我有一个远程服务器,想知道将文件传输到远程服务器的最佳方式是什么

  • SSH 仅允许一个用户使用
  • /var/www 中的每个目录都有一个特定的用户作为所有者。

因此,我正在寻找 rsync,但需要指定另一个执行该sudo部分的命令。否则,我会收到权限被拒绝的消息。

$> rsync somefile -e "ssh" user@server:/var/www/whichever.site

现在‘用户’不拥有/var/www 的权限,但我想使用该用户进入服务器,然后执行sudo。

显然,如果针对这种情况还有另一种“最佳实践”,我很想知道。

答案1

  1. 在远程主机上,确保 /etc/ssh/sshd_config 中有此行​​“PermitRootLogin without-password”(在许多发行版中,它默认存在)。这允许 root 使用任何身份验证方法获取 ssh shell除了不安全的密码提示。
  2. (如果你还不知道如何操作)请按照以下任一步骤操作许多教程如何通过 ssh 实现无密码登录
  3. 像平常一样使用 rsync,无需任何密码提示。

只是不要忘记,只要远程主机的 /root/.ssh/authorized_keys 中有此行​​,该机器就会接受来自您 PC 的 root 命令。

答案2

尝试这个

 rsync -R -avz -e ssh --rsync-path="echo mypassword | sudo -S  mkdir -p /remote/awesome/folder && sudo rsync" /home/user/my/awesome/folder [email protected]:/remote/lovely/folder --delete

这将使两个文件夹保持同步。请记住源始终是第一个。

NOPASSWD另一种选择是,您可以在远程服务器上添加/etc/sudoers这样的。

username ALL= NOPASSWD:/usr/bin/rsync

告诉NOPASSWD:/usr/bin/rsyncsudo 当您的用户运行时/usr/bin/rsync或者只是rsync不需要密码。

相关内容