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