情况:运行 Ubuntu 10.04。我有一个 bash 脚本,它将一堆文件夹打包成 tar 并通过 ssh 将它们复制到另一台主机。我已将公钥复制到另一台主机,因此它不会提示输入密码。我运行eval ssh-agent
(带额外的引号)并ssh-add
缓存到密码短语,之后我可以随时运行脚本而无需输入任何提示。到目前为止一切顺利。
问题:我想通过 cronjob 运行此脚本,目前以我自己的用户身份运行(这只是一个测试设置)。但是当我重新启动机器时,ssh-agent 会丢失我通过 ssh-add 添加的密钥,我必须再次执行 eval ssh-agent 和 ssh-add 才能使其正常工作。
问题: - 如何使 ssh-agent 始终运行?(因为 cronjob 运行时不会有用户登录) - 如何将我的 rsa_id 永久保存到 ssh-add?
答案1
创建 ssh 密钥时,您需要将密码短语留空。这样您就不需要使用 ssh-agent 了。显然,这种选择存在安全隐患 - 但如果密钥受到保护,ssh-agent 总是会要求您第一次输入密码短语。
从技术上讲,你也许可以使用预计从脚本中将密码短语传递给 ssh-agent - 但如果您准备将密码短语放入脚本中,您也可以将其留空。
如果遵循这条路线,提高安全性的通常方法是仅允许相关密钥访问另一台服务器上专门制作/限制的帐户。