Единственное, что определенно стоит сделать, - это сохранить файл, который может прочитать только пользователь.
Ваш аргумент для использования ключа ssh выглядит примерно так:
- Мне нужно сохранить пароль, поэтому я его зашифрую
- Если я использую ssh-ключ пользователя для шифрования, это предотвратит расшифровку пароля, даже если у него есть источник моего сценария, потому что только пользователь может прочитать его ssh-ключ.
Если вы храните зашифрованный пароль в файле, только пользователь может прочитать, вы получите то же преимущество, что и при использовании ключа ssh, не беспокоясь о том, чтобы вообще читать ключи ssh пользователя.
Я согласен, что есть некоторая выгода от того, чтобы не хранить пароль в виде обычного текста, чтобы не допустить, чтобы кто-то вошел в систему как root
, просто делая:
cat secret-password
чтобы получить пароль, но помните, что в вашем скрипте Python будет легко найти строку, которая говорит:
password = decrypt-password(data)
и добавить следующую строку:
print "The user's password is",password
Что-то вроде os.fchown()
сделало бы трюк для защиты файла, так же как и создание файла с правильными разрешениями.
Вы можете base64
кодировать пароль, чтобы он не был простым текстом, но если мы предполагаем, что злоумышленник может прочитать и отредактировать ваш сценарий, единственное, что защитит пользователя, - злоумышленник не сможет прочитать файл, содержащий зашифрованный пароль.
Если вы действительно беспокоитесь об этом, просто запрашивайте пароль у пользователя при каждом запуске сценария.