Linux + 自动化 rsync 命令

Linux + 自动化 rsync 命令

我的目标是将 /tmp/my_file 从 10.10.10.1 复制到我的 Linux 机器,无需登录名和密码,我使用正确的密码 secret123 设置了密码文件,因此 rsync 应该可以工作,请告知为什么我被拒绝权限。

备注 - 10.10.10.1 地址是 Linux 机器版本 - Red Hat 5.3

   rsync -WavH --password-file=/tmp/passwords --progress [email protected]:/tmp/my_file .


   Permission denied.
   rsync: connection unexpectedly closed (0 bytes read so far)
   rsync error: error in rsync protocol data stream (code 12) at io.c(165)

   more /tmp/passwords
   secret123

   ls -ltr  passwords
   -rwxr-xr-x    1 root     root           10 Sep 12 17:32 passwords

答案1

看起来您可能正在使用 SSH 连接到 root。SSH 通常不允许 root 登录,而且许多发行版根本不允许 root 登录。您最好使用 SSH 授权密钥来使您能够以 root 身份进行连接。

如果可以的话,最好连接到 root 以外的帐户。

如果您想在远程端使用 rsync 守护进程,我相信您需要在服务器规范后添加两个冒号。Rsync 用户 ID 与系统用户 ID 不同。访问由 rsync 配置文件控制。

编辑:如果您在 10.10.10.1 上使用 rsyncd 守护进程,那么其中任何一个都应该可以工作。(注意:我更改了用户 ID,尽量避免使用 root。)我还假设您有一个tmp模块映射到/tmp

rsync -WavH --password-file=/tmp/passwords --progress [email protected]::tmp/my_file .
rsync -WavH --password-file=/tmp/passwords --progress rsyncd://[email protected]:tmp/my_file .

telnet 10.10.10.1 873验证您是否可以使用应返回 RSYNC 版本的命令连接到守护进程。您还可以使用rsync 10.10.10.1::应返回公共共享列表的命令测试使用 rsync。将您的用户 ID 和密码文件添加到命令中以获取私有共享。

如果您使用的是 ssh,请使用私钥。您可以使用ssh-agentssh-add加载密钥,这样就无需输入密码。同样,除非必须,否则不要使用 root。最好使用不同的组授予对文件的访问权限,并设置有权访问该组的用户 ID。

您可以使用 ssh 测试 ssh 访问。如果您要复制文件时文件始终是新的,那么 scp 会比 rsync 更简单。

尝试测试不使用复制选项的访问。类似下面的方法应该有效:

rsync -vvv --password-file=/tmp/passwords [email protected]::tmp/my_file

EDIT2:我重新阅读了您的查询。看来您想在不登录的情况下复制单个文件。最简单的方法是使用scp远程系统上的授权密钥文件。一些文件只能由 root 读取,因此您应该能够使用不同的用户 ID。尝试以下命令:

scp [email protected]:/tmp/my_file . 

使用的唯一优点rsync是如果文件尚未被替换,则可以避免复制文件。因为您使用了此-W选项,所以您失去了仅传输更改的优势。对于日志文件,此--append选项有助于加快传输速度。

答案2

--password-file 选项仅在连接到 rsync 服务器时使用。

您必须通过 ssh 使用带有密钥验证的 rsync 才能工作。

-password-file 此选项允许您在文件中提供用于访问 rsync 守护进程的密码。

从:rsync 手册页

答案3

最简单的方法是设置 SSH 密钥并使用这些密钥建立 rsync 连接。

相关内容