rsync:无法摆脱密码提示

rsync:无法摆脱密码提示

我正在尝试运行 rsync 来复制文件(Centos 5.2 -> Centos 5.2),我需要使用 nohup 来运行它,这样它才能在我断开 ssh 会话后运行。问题是我无法让 rsync 不提示输入密码,也无法让 nohup 很好地处理密码提示。

rsync -v -r -x --password-file=/root/password.txt /sourcedir/ [email protected]:/destdir

我尝试将 RSYNC_PASSWORD 变量设置为密码并使用--password-file创建一个包含密码的文件,但在这两种情况下我仍然会收到要求输入密码的提示。

我如何为 rsync 输入所需的密码才能使其顺利运行?

答案1

您可以使用公钥/私钥验证。

生成一对公钥/私钥

ssh-keygen -t rsa

然后将 dsa.pub 复制到目标主机主目录中的 .ssh/authorized_keys 文件中。

答案2

问题是 RSYNC_PASSWORD 和 --password-file 仅在直接连接到 rsyncd 服务器时适用,在使用远程 shell(如 ssh)生成 rsync 时不适用。根据要传输的数据,您可以选择设置无密码 ssh 密钥或开始使用 rsyncd 守护程序。

(请注意,如果您直接连接到 rsyncd,那么您的数据将以未加密的形式传输。)

答案3

或者,你可以使用 screen 代替 nohup。它的工作原理如下:

  • 类型screen
  • 你将看到一个新的终端
  • 启动将永远运行的命令,在你的情况下是 rsync 命令。
  • 使用 断开与 screen 终端的连接ctrl-a,然后按 d
  • 您现在可以退出或做其他事情,您的屏幕终端将继续做您的事情
  • 您可以通过键入重新连接到屏幕screen -r,这也可以在另一个 tty 或 ssh 连接或其他任何连接上工作。

答案4

只要通过 ssh 服务器进行,​​rsync 就会继续提示输入密码,最好的选择是为 ssh 添加公钥身份验证。因此,首先:

在源服务器上 -

$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:

现在复制 ssh 公钥至

~/.ssh/id_rsa.pub

到远程主机:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

或者您也可以安装 ssh-pass 并运行:

SSHPASS='myPassword'
/usr/bin/rsync -a -r -p -o -g --progress -s -u --rsh="/usr/bin/sshpass -p $SSHPASS ssh -o StrictHostKeyChecking=no -l root"  /sourcedir/ [email protected]:/destdir  >&2

相关内容