Библиотека сайта rus-linux.net
5 способов сгенерировать случайный пароль в командной строке
Оригинал: 5 Methods to Generate a Random Password from the Command Line
Автор: Steven Vona
Дата публикации: 24 февраля 2019 года
Перевод: А. Кривошей
Дата перевода: декабрь 2019 г.
Если бы это зависело от меня, я бы никогда не покидал командную строку. Я все еще использую lynx (браузер командной строки), dict (словарь командной строки) и bc (калькулятор командной строки), хотя с уменьшающейся регулярностью. Так почему бы не использовать командную строку для генерации случайных паролей?
В этом кратком мануале по Linux мы покажем вам 5 команд bash (плюс одна утилита) для быстрой генерации случайного пароля.
Большинство из этих примеров используют файл urandom в dev. Вот выдержка из справочной страницы:
Специальные символьные файлы /dev/random и /dev/urandom (присутствуют с Linux 1.3.30) предоставляют интерфейс для генератора случайных чисел ядра ...
… Генератор случайных чисел собирает шум окружающей среды от драйверов устройств и других источников в пул энтропии. Генератор также сохраняет оценку количества битов шума в энтропийном пуле. Из этого энтропийного пула создаются случайные числа.
Проверка доступного количества битов шума в энтропийном пуле
Вы можете проверить доступную энтропию в большинстве систем Linux, прочитав файл /proc/sys/kernel/random/entropy_available. Это будет число в диапазоне 0-4096.
$ cat /proc/sys/kernel/random/entropy_avail 3937
Использование команды cat
Здесь мы читаем файл urandom с помощью cat и отправляем его в tr. Команда tr удаляет все печатные символы, кроме пробелов. Затем команда head говорит команде напечатать первые 18 символов и затем остановиться.
$ cat /dev/urandom | tr -cd '[:graph:]' | head -c 18 S_ap-[\Kjwdd_pY8+
Если вам нужен более короткий или более длинный пароль, вы можете изменить число в команде head. Если вам нужен пароль без специальных символов, вы можете изменить команду tr на:
[:alpha:] – все буквы
[:alnum:] – все буквы и цифры
Использование команды tr и перенаправления
Часто люди используют cat там, где можно обойтись без нее. Вот пример, который делает то же самое, что и в первом примере, используя для ввода файла перенаправление вместо cat.
$ tr -cd "[:graph:]" < /dev/urandom | head -c 18 DA.q%#fEQ$qqAIz~e5
Здесь вместо использования cat мы перенаправляем urandom прямо в tr.
Ни одна из этих команд не добавляет новую строку в конец, что приведет к выводу, подобному этому (я очистил это для удобства чтения):
[savona@putor ~]$ tr -cd "[:graph:]" < /dev/urandom | head -c 18 ni;ry.M&!b,ok~%HRj[savona@putor ~]$
Если это беспокоит вас так же, как и меня, просто передайте xargs -0 в конце:
[savona@putor ~]$ tr -cd "[:graph:]" < /dev/urandom | head -c 18 | xargs -0 A[T:$m3*,BO?LM4Gw5 [savona@putor ~]$
Использование команды dd
Команда dd - это одна из тех утилит, которая, кажется, не имеет предела своей полезности. Здесь мы используем urandom в качестве входного файла для dd, а затем перенаправляем к tr, как мы делали выше.
$ dd if=/dev/urandom count=200 bs=1 2>/dev/null | tr -cd "[:graph:]" | cut -c-18 qL?I{fP4+x1;t_L}w9
Этот дает нам хороший чистый вывод с новой строкой.
Использование команды openssl
Я не фанат этого, но, возможно, вам понравится. Из-за кодировки base64 есть некоторые длины, которые вы не сможете выбрать. Например, я не могу сделать 18 (что мне нравится).
$ openssl rand -base64 12 mshskZmBIfxuR782
В Linux всегда есть способ сделать что-то. Чтобы получить длину в 18 символов, мы можем изменить ее на 32 (или 16) и вырезать первые 18 символов.
$ openssl rand -base64 16 | cut -c-18 f+0iF8Rmc9V1/fnmiQ
Использование команды strings
Команда strings не является одной из часто используемых команд. Здесь мы используем ее для извлечения печатных символов для urandom, затем используем tr для очистки новых строк и вывода на печать первых 18 символов.
$ strings /dev/urandom | tr -d '\n' | head -c18 3.k'RJ.|R}e E<"!J'
Эта команда также не печатает новую строку, используйте трюк с xargs, приведенный выше, если это необходимо.
Утилита Pwgen
Установка
Утилита pwgen - это небольшая программа командной строки, которая генерирует пароли. У ее мало опций, но иногда меньше - лучше, чем больше. Чтобы установить pwgen в системах на основе rpm (Red Hat, CentOS, Fedora), введите команду:
$ sudo dnf install -y pwgen
или
$ sudo yum install -y pwgen
Для установки в системах на базе deb (Debian, Ubuntu):
$ sudo apt-get install pwgen -y
Базовое использование
Просто введите pwgen, чтобы напечатать блок паролей в столбцах на вашем экране.
Чтобы придерживаться моей темы, давайте сгенерируем пароль длиной 18 символов, включающий по крайней мере одну заглавную букву, одну строчную букву, одну цифру и один специальный символ. Мы также хотим, чтобы она печатала только один пароль.
$ pwgen -Bcny 18 -1 aish~ohp9Aht@e4ozu
B - не включайть в пароль неоднозначные символы.
c - включить в пароль хотя бы одну заглавную букву.
n - включить в пароль хотя бы одно число.
y - включить в пароль хотя бы один специальный символ.
18 - длина в символах.
-1 - печатать только один пароль.
Почитайте
Другие статьи о генерации паролей в Linux, опубликованные на нашем сайте:
- "Четыре простых способа сгенерировать сильный пароль в Linux"
- "10 способов генерации случайного пароля в командной строке"
- "Десять способов генерировать пароль в командной строке случайным образом"
- "Pass - отличный консольный менеджер паролей"
- "Управление паролями в Linux с помощью команды passwd"