Ssh pass безопасен?
Я пишу сценарий для автоматизации запуска определенной команды в нескольких системах Linux. Я собираюсь использовать что-то вроде:
read -s "Enter password" ANS
sshpass -p $ANS ssh server "some command"
Будет ли в этом вопрос безопасности?
2 ответа
Ваш пароль и любые другие аргументы командной строки будут видны кому-либо еще в системе с помощью команды ps. Лучшей альтернативой было бы использовать логин на основе ключа SSH? Официальный документ
Страница man sshpass содержит целый раздел, посвященный вопросам безопасности.
Пользователям sshpass рекомендуется использовать один из других методов передачи паролей, которые все более безопасны.
В частности, людям, пишущим программы, предназначенные для программной передачи пароля, рекомендуется использовать анонимный канал и передавать конец чтения канала в sshpass с помощью параметра -d.
Таким образом, если вы должны передать пароль, они поощряют использование анонимного канала. Вы также можете сохранить пароль в файл и использовать -f
флаг вместо.
Если вы заинтересованы в безопасности, аутентификация на основе ключей - лучший вариант. Иногда это нецелесообразно, так как у вашей цели (ей) не хватает дополнительной энергонезависимой памяти для хранения открытого ключа, но вы должны попытаться настроить аутентификацию на основе ключей, если можете.