通过ssh运行多个rsync命令,仅输入一次ssh密码

时间:2019-05-11 17:05:55

标签: bash macos ssh rsync synology

我正在通过脚本中包含的多个rsync调用在iMac和Synology NAS之间同步多个文件夹。如何添加带有私钥/公钥和密码的ssh,这样在脚本运行时我只需输入一次密码,而所有rsync命令都使用安全的ssh隧道?

rsync -rtv --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --exclude='.*' /Users/Username/FolderName/ username@ipaddress::Foldername/

这是每个不带ssh的rsync调用的模板。每个rsync调用中的文件夹名称都不同。

我可以使用密码生成ssh私钥/公钥,并将公钥上传到NAS,并将其合并到authorized_keys文件中。我了解将ssh添加到rsync命令的语法。我不知道如何通过脚本为脚本中运行的7个rsync命令仅输入一次密码。 任何会向我指出正确方向的意见都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

如果您使用SSH密钥进行脚本编写,则不想使用密码短语。除了在TTY上之外,OpenSSH都不提供输入密码的方法,使用TTY输入密码的唯一方法是使用Expect之类的东西来处理密码,这很复杂。 >

相反,您应该使用文件系统权限,并在必要时使用专用用户来控制对密钥的访问。