Предположим, что я использовал sha1pass
для генерации хеш-кода некоторого секретного пароля в командной строке. Я могу использовать sha1pass mysecret
для генерации хеша, mysecret
но это имеет тот недостаток, который mysecret
сейчас есть в истории bash. Есть ли способ выполнить конечную цель этой команды, избегая раскрытия mysecret
в виде простого текста, возможно, с помощью passwd
приглашения -style?
Я также заинтересован в обобщенном способе сделать это для передачи конфиденциальных данных любой команде. Метод будет меняться, когда конфиденциальные данные передаются в качестве аргумента (например, в sha1pass
) или в STDIN какой-либо команде.
Есть ли способ сделать это?
Изменить : Этот вопрос привлек большое внимание, и было несколько хороших ответов, предложенных ниже. Резюме:
- Согласно ответу @ Kusalananda , в идеале никогда бы не пришлось вводить пароль или секрет в качестве аргумента командной строки для утилиты. Это уязвимо в нескольких отношениях, как он его описал, и следует использовать более совершенную утилиту, способную принимать секретные данные на STDIN.
- Ответ @ vfbsilva описывает, как предотвратить сохранение вещей в истории bash.
- @ В ответе Джонатана описан совершенно хороший метод для достижения этой цели, если программа может хранить свои секретные данные в STDIN. Поэтому я решил принять этот ответ.
sha1pass
в моем ОП был только пример, но обсуждение установило, что существуют лучшие инструменты, которые принимают данные о STDIN. - а @R .. отмечает в своем ответе , использование расширения команды на переменном не безопасно.
Итак, в целом, я принял ответ @ Jonathan, так как это лучшее решение, учитывая, что у вас есть хорошо продуманная и хорошо управляемая программа для работы. Хотя передача пароля или секрета в качестве аргумента командной строки принципиально небезопасна, другие ответы предоставляют способы смягчения простых проблем безопасности.
sha1pass mysecret
работает, и, следовательно, знать, что этоmysecret
такое. (Это работает только в течение нескольких секунд , в то время как программа выполняется, конечно ...)