crontab中没有密码的简单rsync

我想运行以下:(Centos 5.4)

rsync -avz /source_folder 192.168.1.1:/destination_folder

现在我从CLI运行它,但最终我想从crontab(用户:根)运行它。

当我运行它时,它总是要求我inputroot密码。 我想跳过密码。 我已经看到了一些关于这个问题的答案,但是它不是工作,或者我不确定我完全理解如何去做。 有人可以协助吗?

正如其他人所说,你可以用密码短的ssh键来做到这一点。 这本质上是不安全的,您需要采取额外的步骤来将一些安全性重新添加到stream程中。 我所做的是将密钥的使用限制在主机和命令上 。 我从笔记上写下来,我觉得我没有错过任何步骤。

首先要做的是生成一个公钥对,这个公钥对将仅用于这个备份过程。 当提示input密码时,只需按两次input。

 ssh-keygen -t rsa -b 2048 -C "For Backup use only" Generating public/private rsa key pair. Enter file in which to save the key (/home/root/.ssh/id_rsa): /root/.ssh/backup.id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/backup.id_rsa. Your public key has been saved in /root/.ssh/backup.id_rsa.pub. The key fingerprint is:65:c0:cb:2b:9e:18:ff:b2:59:d4:b5:e8:ae:84:32:2b 

将公钥/root/.ssh/backup.id_rsa.pub传输到远程主机,并将其添加到/root/.ssh/authorized_keys文件中。

在远程主机上,通过添加from=command= restrictions来限制公钥的使用。 编辑/root/.ssh/authorized_keys文件,find备份密钥并添加将运行cron作业的主机的地址/名称以及要运行的命令。 这个命令将会在用这个键login时运行,例如

 from="192.168.254.207",command="/root/checkrsync",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3N... 

您只能从192.168.254.207使用此密钥,并且只能运行命令/ root / checkrsync等function已被删除。

像这样编辑文件/ root / checkrsync

echo $SSH_ORIGINAL_COMMND >/tmp/rsync.cmd

保存并使其可执行

chmod 700 /root/checkrsync

稍后我们将知道$ SSH_ORIGINAL_COMMAND是什么时候,将更改/root/checkrsync

在要运行cron作业的主机上,以交互方式运行rsync命令

 /usr/bin/rsync -avz -e "/usr/bin/ssh -i /root/.ssh/backup.id_rsa" /source_folder [email protected]:/destination_folder 

不要担心任何错误消息,我们只想在远程主机上生成/tmp/rsync.cmd文件

在远程主机上准确logging/tmp/rsync.cmd文件的内容(它将类似于rsync --server -vlogDtprze.iLs . /destination_folder )。

在远程主机上编辑/root/checkrsync并将其更改为

 if [[ "$SSH_ORIGINAL_COMMAND" == "rsync --server -vlogDtprze.iLs . /destination_folder" ]] then $SSH_ORIGINAL_COMMAND fi 

if语句的右边是/tmp/rsync.cmd中的内容。

testing设置。 在要运行cron作业的主机上,再次交互式运行rsync命令

 /usr/bin/rsync -avz -e "/usr/bin/ssh -i /root/.ssh/backup.id_rsa" /source_folder [email protected]:/destination_folder 

现在它应该正确运行,如果它然后安装到您的crontab。

 crontab -e * 1 * * * /usr/bin/rsync -avz -e "/usr/bin/ssh -i /root/.ssh/backup.id_rsa" /source_folder [email protected]:/destination_folder 

您需要设置密码短的ssh密钥authentication 。

设置这个时要考虑到安全问题。 我build议使用主机访问列表来使用密钥限制源IP。

检查下面的链接来设置SSH密钥。 SSh密钥将帮助您设置密码,而不需要sshlogin。

http://techtrunch.com/linux/ssh-keys

设置CRON:

  1. 以root身份login
  2. 打开terminal并键入crontab -e ,然后input以下内容

    1 * * * * rsync -avz / source_folder 192.168.1.1:/destination_folder

注意

这将在每个小时运行。