我通过脚本中包含的多个 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 命令输入一次密码。 任何能为我指明正确方向的意见将不胜感激。
如果您使用 SSH 密钥进行脚本编写,则不需要使用密码。除了在 TTY 上之外,OpenSSH 不提供输入密码短语的方法,而使用 TTY 输入密码短语的唯一方法是使用类似 Expect 的内容来处理密码短语条目,这不必要地复杂。
相反,您应该使用文件系统权限,并在必要时使用专用用户来控制对密钥的访问。
Unix 和 Linux 有名为“ssh-add”和“ssh-agent”的命令。 ssh-add 保存 内存中的私钥密码,ssh-agent 可以检索它们以供 ssh 使用 或 sftp。
您可以使用 ssh-add 输入一次密码(例如,当您启动计算机时) 机),密码将可用于 ssh 或 sftp,直到下一次 重新启动。
欲了解更多信息,请点击以下链接:
https://www.ssh.com/academy/ssh/agent