Наши партнеры

UnixForum





Библиотека сайта 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 - печатать только один пароль.

Почитайте справочную страницу pwgen для получения дополнительной информации.


Другие статьи о генерации паролей в Linux, опубликованные на нашем сайте: