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

问题描述 投票:0回答:2

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

bash macos ssh rsync synology
2个回答
1
投票

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

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


0
投票

Unix 和 Linux 有名为“ssh-add”和“ssh-agent”的命令。 ssh-add 保存 内存中的私钥密码,ssh-agent 可以检索它们以供 ssh 使用 或 sftp。

您可以使用 ssh-add 输入一次密码(例如,当您启动计算机时) 机),密码将可用于 ssh 或 sftp,直到下一次 重新启动。

欲了解更多信息,请点击以下链接:

https://www.ssh.com/academy/ssh/agent
© www.soinside.com 2019 - 2024. All rights reserved.