У меня есть ситуация, когда задание cron должно загружать файлы как минимум на 2 разных сервера SFTP. У нас есть только логины, поэтому с использованием ключей SSH, как предлагается в другом ответе не сработает. Итак, учитывая пример:
Есть ли стандартный безопасный способ хранения паролей для двух или более логинов SFTP, к которым можно получить доступ с помощью сценария оболочки?
Стандартный способ - хранить их в файлах с открытым текстом и защищать их разрешениями файловой системы. Это так же хорошо, как и безопасность учетных записей, которые могут их читать, и ваша способность сохранять эти разрешения на месте с течением времени.
Существует тенденция к ослаблению заблокированных разрешений по мере того, как разные приложения со временем записывают в файлы или их каталоги. Справочные списки ACL могут помочь, например:
setfacl -m d:g::-,d:o:- /secret/dir
чтобы попытаться принудительно применить пустые разрешения для группы и других, когда в каталог записываются новые файлы - например, если редактор создает новую копию файла паролей вместо обновления исходного файла.
Если вы хотите использовать вместо этого ключи ssh, вы можете хранить секреты в виде открытого текста на другом хосте, который позволяет входить только с помощью ключей ssh. Вам нужно будет выполнить вход в систему на этом хосте по сценарию, прочитать файл паролей, а затем использовать его в команде ssh. Это было бы сложно сделать надежно и безопасно, но это может сработать.
Большинство вариантов, о которых вы можете подумать, в конечном итоге зависят от разрешений файловой системы для их безопасности. Глава 11 SSH: безопасная оболочка есть обсуждение компромиссов.