如何在不询问密码提示的情况下自动执行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
另一答案
如果要远程复制文件:
- 确保本地计算机上有一个可以登录远程计算机的公钥。(在这种情况下,我的ssh-key是“/home/myaccount/.ssh/id_rsa”
- 指定要与远程同步的本地文件夹,在我的情况下为“/ home / myaccount / mysourcefolder”
- 在远程服务器中指定目标文件夹完整路径,在我的情况下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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章