首页 > 解决方案 > 通过 ssh 运行多个 rsync 命令并且只输入一次 ssh 密码

问题描述

我正在通过脚本中包含的多个 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 命令输入一次密码。任何可以为我指明正确方向的输入将不胜感激。

标签: bashmacossshrsyncsynology

解决方案


如果您使用 SSH 密钥编写脚本,则不希望使用密码。除了在 TTY 上,OpenSSH 不提供输入密码短语的方法,而使用 TTY 输入密码短语的唯一方法是使用Expect之类的东西来处理密码短语条目,这是不必要的复杂。

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


推荐阅读