Библиотека сайта rus-linux.net
10 способов генерации случайного пароля в командной строке
Оригинал: 10 Ways to Generate a Random Password from the Command LineАвтор: The Geek,
Дата публикации: September 29, 2010
Перевод: В.Костромин
Дата перевода: 19.05.2012 г.
Одна из очень привлекательных особеностей Linux состоит в том, что вы можете одну и ту же задачу решить сотней различных способов. Даже если речь идет о таком простом деле, как генерация случайного пароля, существует множество команд, которые решают эту задачу в командной строке. В настоящей заметке приведены 10 вариантов того, как это можно сделать.
Мы позаимствовали эти команды на сайте Command-Line Fu и протестировали их на своём Linux-компьютере, чтобы убедиться, что все они работают. Вы можете использовать по крайней мере некоторые из них и в Windows с установленным Cygwin, хотя мы и не тестировали их в этой конфигурации. Но последний вариант наверняка будет работать.
Генерация случайного пароля
Каждую из приведенных ниже команд вы можете либо модифицировать, чтобы получить пароль желаемой длины, либо можете просто использовать первые х символов вывода, если не хотите использовать очень длинный пароль. Полагаю, что вы в любом случае используете менеджер паролей наподобие LastPass, так что нет нужды зпоминать пароли.
1. В этом методе используется SHA для того, чтобы получить из текущей даты хеш-функцию, которая фильтруется с помощью base64 и затем отображаются первые 32 символа.
date +%s | sha256sum | base64 | head -c 32 ; echo
2. Этот метод использует встроенную функцию /dev/urandom, вывод которой фильтруется, чтобы оставить только символы, допустимые в паролях. Затем в выоде оставляются только первые 32 символа.
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
3. В этом случае используется случайная функция из openssl, если этот пакет установлен в вашей системе.
openssl rand -base64 32
4. Этот вариант подобен предыдущему с urandom, но команды используются в обратном порядке. Bash - очень мощная вещь!
tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
5. Еще один пример, в котором для фильтрации используется команда strings
,
которая предназначена для вывода пригодных для печати строк файла, но в этом случае
обрабатывает вывод urandom
.
strings /dev/urandom | grep -o ':alnum:' | head -n 30 | tr -d '\n'; echo
6. А вот еще более простой вариант использования urandom
.
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
7. В этом варианте используется очень полезная команда dd
.
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
8. Вы можете даже создать случайный пароль, который можно набирать одной только левой рукой.
</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""
9. Если создавать пароли вам приходится часто, будет неплохой идеей написать для этого
функцию. После этого вы сможете использовать randpw в любое время, как только вам
потребуется создать новый пароль. Лучше всего поместить ее в ваш файл ~/.bashrc
.
randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}
Тот же самый прием вы можете использовать с любым из приведенных выше примеров, достаточно заменить содержимое фигурных скобок { }.
10. И, наконец, самый простой способ сгенерить пароль в командной строке. Этот способ работает в Linux, Windows с Cygwin и,вероятно, в Mac OS X. Я уверен, что некоторые люди скажут, что этот способ дает не такой случайный результат, как некоторые из предыдущих вариантов, но, честное слово, он вполне удовлетворительно работает.
date | md5sum
Да, и этот вариант достаточно легко запоминается.
Есть и другие способы генерации случайного пароля в командной строке Linux, например,
команда mkpasswd
, которая предназначена для задания пароля к пользовательскому экаунту
в Linux. А какой способ используете вы?