我遇到过这样的情况,一个 cron 任务需要将文件上传到至少 2 个不同的 SFTP 服务器。我们只有登录名,所以按照另一个答案中的建议使用 SSH 密钥不会起作用。因此给出以下示例:
- SFTP 服务器 1
- 某个用户名
- 一些密码
- SFTP 服务器 2
- 某个用户名
- 一些密码
是否有一种标准、安全的方法来存储 2 个或更多 SFTP 登录的密码,并可以通过 shell 脚本访问?
答案1
标准方法是将它们存储在纯文本文件中,并使用文件系统权限保护它们。这与可以读取它们的帐户的安全性以及您长期保持这些权限的能力一样好。
随着不同应用程序随着时间的推移写入文件或其目录,锁定的权限趋于松散。目录 ACL 可以提供帮助,例如:
setfacl -m d:g::-,d:o:- /secret/dir
每当在目录中写入新文件时,尝试强制对组和其他人执行空权限 - 例如,如果编辑器创建密码文件的新副本,而不是更新原始文件。
如果您想使用 ssh 密钥,则可以将密钥以纯文本形式存储在另一台仅允许通过 ssh 密钥登录的主机上。您必须在该主机上编写登录脚本,读取密码文件,然后在 ssh 命令中使用它。这很难可靠且安全地完成,但它可以工作。
您能想到的大多数选项最终都依赖于文件系统权限来确保其安全性。SSH:安全外壳对权衡进行了讨论。