如何在不询问密码提示的情况下自动执行rsync [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不询问密码提示的情况下自动执行rsync [关闭]相关的知识,希望对你有一定的参考价值。

我想将rsync任务自动化为cron作业。由于它需要密码,我无法做cronjob。我需要指定密码和rsync命令,否则我会将密码存储在一个文件中,我会从中读取。我的命令看起来像这样:

rsync -aPe "ssh -i ' . $server->{'ssh_key'} . '" ' . $server_lock_dir;

那么我在哪里输入密码?

答案

您不需要这样做 - 只需要设置一对ssh密钥并将公钥放在远程系统的.ssh目录中。

然后你就这样做:

rsync -a -e ssh /local/path/ server:/remote/path/

(请注意,-e ssh已经有很多年了,所以你可以省略它,除非你使用的是旧版本。)

设置密钥here有一个“如何”指南。

另一答案

如果你想从cron工作,你有几种可能性:

  • 设置无密码的ssh密钥 - 不是很安全
  • 设置无密码的ssh密钥,但将它们与authorized_keys文件中的ssh ForceCommand结合使用,以限制可以使用该ssh密钥运行的命令。请参阅man sshd,google on“ssh ForceCommand”
  • 设置密码ssh密钥,但将它们与密钥链结合使用,以便在会话之间将密钥保存在内存中。我写了一篇博文:qazxsw poi
另一答案

如果要远程复制文件:

  1. 确保本地计算机上有一个可以登录远程计算机的公钥。(在这种情况下,我的ssh-key是“/home/myaccount/.ssh/id_rsa”
  2. 指定要与远程同步的本地文件夹,在我的情况下为“/ home / myaccount / mysourcefolder”
  3. 在远程服务器中指定目标文件夹完整路径,在我的情况下remoteaccount @ remoteserver:“/ home / remoteaccount / mydestinationfolder /”

注意:

  • --progress用于显示正在复制的每个文件的进度
  • -a以递归方式传输源文件夹中的所有文件
  • -v用于冗长
  • -z压缩小文件的数据部分

我的命令如下所示:

rsync -avz --progress -e“ssh -i /home/myaccount/.ssh/id_rsa”/ home / myaccount / mysourcefolder remoteaccount @ remoteserver:“/ home / remoteaccount / mydestinationfolder /”

以上是关于如何在不询问密码提示的情况下自动执行rsync [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不回显的情况下从 shell 脚本中获取密码

如何在没有密码提示的情况下执行 mysqldump?

如何在没有密码提示的情况下执行 mysqldump?

无密码通过ssh执行rsync

如何在不不断传递用户名/密码的情况下识别 Go 服务器上的用户

如何在不询问位置的情况下工作天气