Генераторы паролей в Linux

Оригинал: 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. Вы можете даже создать случайный пароль, который можно набирать одной только левой рукой.

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. А какой способ используете вы?

Придумывать пароли - сложная творческая задача, особенно когда надо раздать пароли нескольким десяткам человек, а фантазии хватает только на «123qwe».
Поэтому лучше поручить эту задачу программе.

В дебианоподобных системах (в том числе и в Убунте. В других системах по-другому, но это сами разберётесь) делаем в консоли от имени суперпользователя:

aptitude install pwgen

Этим мы установим программу pwgen - консольный генератор паролей в Linux.

pwgen был написан для создания паролей сложных для подбора, но лёгких для запоминания человеком. Заострю на этом внимание: по умолчанию программа генерирует пароли, которые человек сможет потом легко запомнить! Это гарантирует (ну почти) то, что пользователь не прилепит этот пароль на монитор и не вставит на клочке бумажки в клавиатуру. А ещё pwgen имеет множество интересных настроек и предельно прост в употреблении.

Синтаксис

pwgen [ключи] [длина_пароля] [количество_паролей]

Ключ Описание
-c или --capitalize Включить в пароль хотя бы одну большую букву.
-A или --no-capitalize Не использовать большие буквы при создании пароля.
-n или --numeral s Включить в пароль хотя бы одну цифру.
-0 или --no-numerals Не использовать цифры при создании пароля.
-y или --symbols Включить в пароль хотя бы один специальный символ.
-s или --secure Создать абсолютно хаотичный пароль (не учитывать лёгкость в запоминании).
-B или --ambiguous Не включать в пароль символы, которые можно перепутать (например, большая «O» и цифра «0»). Как написано в справке программы, этот ключ может использоваться людьми с плохим зрением, но в общем случае - не рекомендуется.
-h или --help Вывести справку. Более полная справка доступна, как обычно, по man pwgen .
-H путь/к/файлу[#сид] или
--sha1=путь/к/файлу[#сид]
Использовать хэш sha1 заданного файла как генератор произвольных знаков. Пароли, сгенерированные таким методом, не будут совсем уж произвольными. Запомнив файл (и опциональный сид), можно восстановить пароль или серию паролей. Иногда это может быть полезно.
-C Вывод сгенерированных паролей несколькими столбиками.
-1 Вывод сгенерированных паролей одним столбцом.
-v или --no-vowels Не использовать гласные буквы (или числа, которые могут быть приняты за гласные), чтобы случайно не получить матерное слово. Понятно, что пароли создаются на латинице, поэтому впечатлительным русским людям, не знающим иностранных языков, можно не волноваться. С другой стороны, транслит никто не отменял.

Дополнительно

Ключи можно объединять. Например, если мы хотим создать пароль с цифрами, большими буквами и специальными символами, можно ввести:

Если ключ требует параметра, он должен стоять либо отдельно, либо на последнем месте:

pwgen -ncy1H ~/video/xxx_teens_porn.avi#3

длина_пароля задаёт длину паролей в символах, количество_паролей , как ни удивительно, количество паролей.

По умолчанию pwgen выдаёт полный экран восьмисимвольных паролей, с цифрами и большими буквами, навроде этого:

user@comp: ~$ pwgen
yi0wohXa Ohw9Uboo ki7vooPh oi7roo5O Eghie3ai sheiHu7o ciiH8cae Bainou3O
OhChee5u Noo1ohku oHee7ONg ohY6eagh jaeShii1 vai0Phae aeK6Uegh EeGh3pai
uYoa9eig quooLie2 wa1aiSho eiZoop0G eiPh6vei Aizon4ya Aewaek1E OR9Pei7U
phee2ahK pai7aeNo do1booHi aiJah3Sh AQu8iaNg reim6Oog Eech2ooJ taCh8gee
quaeYie1 Thaut3Yi iC5nooch ah0yohKe ais6Eeva uut3gieT eiyo7Xee Iu4eisie
iJaca7Yu ieZ8hu6r aeW7Oola seeco9Ah ahcaeZ5s eeVei2So ePh5dua5 vohPee0O
ohRua8ro Sie5phei Fuyaena2 Ohchoo0e eecahSh4 Ov8bu2ie Ahb8ooW5 noh6Aese
ohRoo5sh tho9Otha Quaefoo1 quie9Ush Eer1Eove johkoo4N ve8aiTii quoF1Eef
EeZ2Baht eiy9lo8E ya8Eirua soRaequ8 eoPe9aaR jaebaeG5 dai6wahX aihahR4s
aQu6ohXo OopheF4T Pulohw0a Wae6aeth pi1Jotie uThahr1i eiTh0kai KeiZ9voh
wah2aiWa Ohth8On2 aiK1asee hiQu1ahr dai1Phei Yainaep1 che9eeTh Olahgh9i
eish7IeR aeb6Poe6 Uopae8ei Ciu5aeng bam8ohBo Thoh0qua ohKah9pa bieL1quu
ahPhieY6 OoHah4Ve Cae0phei Hoo6oogh ahW6doh6 ua0ieRoh eiH1WaQu wath2Wie
eixi6He2 Shohs4oh pui9oSie fee4Eb2E BaTheib2 choosh6D OoneM9ye hoQuie3u
eev4Xie7 Bae3Aevo Otaari2y Ibeem7ju la8En9sh WuPa2uyu OoShiX6i Xie3ex3X
Thee0ish xec5aeSi weebi1eX Fuwie7fu Cho1quaB Feep5ohz Baif4Oos Veuy6zuT
neiwee5I aiTeilu4 ahPheit1 iaZ8zuad Eafi8Buo pez3Quai oono0Phe voh6Ooch
aij0jaeK Jahta2ah aeTh6ohn ohMeeri2 Oop0use7 ief4lieH thee7eeB EiDov9ah
zahj4Usa ee7ae1Ja eitho9Ce ez1Bee9a Uhei9phe Iu4yai8a chaeG7za FooBe9ee
Ei9eisoh zeiL1ieG paiy5aeH Ouha8Ahr aeR8Hoop Nait0AhH weeMe6ci tuaP2aeg

или выдаёт единственный пароль (если стоит -1 ).

Количество паролей можно, также, задать дополнительным ключом:
-N или --num-passwords = количество_паролей

This version of pwgen was written by Theodore Ts’o . It is modelled after a program originally written by Brandon S. Allbery, and then later extensively modified by Olaf Titz, Jim Lynch, and others. It was rewritten from scratch by Theodore Ts’o because the original program was somewhat of a hack, and thus hard to maintain, and because the licensing status of the program was unclear.

Придумать одновременно красивый, сложный для взлома и легко запоминающийся пароль очень сложно. Например когда мне нужно ввести пароль для новой учетной записи, на ум приходят только элементарные или уже использованные варианты. Но существуют так называемые генераторы паролей, способные создавать красивые и безопасные пароли по своим алгоритмам.

В этой статье я опишу три, на мой взгляд, лучших генераторов паролей для операционной системы Linux.

pwgen создает безопасные пароли, которые в то же время очень легко запомнить. Легко запоминаемые пароли не будут так же безопасны как действительно случайные, но это приемлемый уровень риска для большинства случаев. Преимущество запоминающихся паролей очевидно - у вас не возникнет желание записать их или сохранить в электронном виде в небезопасном месте.

Pwgen довольно популярная утилита, поэтому есть в официальных репозиториях большинства дистрибутивов. Для установки в Ubuntu наберите:

sudo apt-get install pwgen

При запуске pwgen без параметров будет сгенерирован целый список паролей. Просто выберите понравившийся вариант, и очистите терминал чтобы никто не подсмотрел что вы выбрали.

Для запуска наберите:

Как только выберете пароль используйте команду clear чтобы очистить вывод. Если вы уверены что никто не смотрит можно заставить программу генерировать только один пароль:

Для создания полностью случайного пароля используйте опцию s:

Чтобы сделать пароль еще более безопасным можно использовать в нем один специальный символ, например восклицательный знак, кавычка, точка, плюс, минус, равно и т д. Для этого сеть опция -y:

Если вас не устраивает стандартная длина пароля, ее можно изменить опцией n, например:

Еще несколько интересных опций утилиты:

  • -0 - не использовать цифры
  • -B - не использовать символы которые можно спутать при печати, например: L и 1, 0 и O.

2. makepasswd

Утилита makepasswd работает аналогично pwgen, однако она не пытается создать пароли которые легко запомнить. Все пароли генерируются случайным образом с акцентом на безопасность.

Для установки в Ubuntu откройте терминал и выполните:

sudo apt-get install makepasswd

Для создания одного пароля введите:

Для генерации пяти паролей, с минимальным количеством символов 10, наберите:

makepasswd --count 5 --minchars 10

Вы также можете указать символы для генерации пароля. Это может быть полезно при создании пин-кодов. Например для получения четырехзначного пин-кода используйте:

makepasswd --string 1234567890 --chars 4

3. PasswordMaker

Программа Passwordmaker немного отличается от двух предыдущих. Первоначально это было расширение для популярных браузеров Internet Explorer и Firefox и т д. Пакет passwordmaker-cli устанавливает консольную версию программы:

sudo apt-get install passwordmaker-cli

Для генерации пароля нужно указать url и мастер пароль. Утилита на основе этих данных создает уникальный пароль. Например:

passwordmaker --url maketecheasier.com

В результате мы видим очень даже безопасный но совсем не запоминаемый пароль. Например у меня получилось FC(QI-Ge.

Если вы снова запустите программу с тем же url и мастер-паролем будет сгенерирован тот же пароль. Это означает что вы можете создать пароль для определенного сайта, который нет необходимости помнить, и не нужно нигде хранить.

Всегда держите ваши пароли в надежном месте и не используйте очевидные варианты такие как password или qwerty.

Время от времени приходится менять пароли. Все знают, что хороший пароль должен включать большие и малые латинские буквы, цифры и специальные символы. При этом они не должны быть слишком короткими. И каждый раз придумывать их все труднее и труднее, особенно если использовать разные пароли на разных сервисах. Можно для этого использовать, например, программу pwgen или генератор, встроенный в keepassx. А можно написать простой генератор паролей на bash.

Используемые символы

Будем использовать следующие символы: Большие и малые буквы латинского алфавита (A-Z и a-z), цифры (0-9) и символы «!@#$%^&*()?/\{}-+_=<>.,». Такое сочетание обеспечит максимальную надежность.

Длина пароля

Длина пароля будет 16 символов. Если вам нужен более короткий пароль, то вы можете указать меньшую длину в скрипте, либо добавить опцию командной строки.

Скрипт-генератор паролей на bash

Самое первое, что нам необходимо — это переменная, содержащая все символы, которые мы будем использовать. Также нужна будет переменная, содержащая длину пароля и переменная для хранения самого пароля.

SYMBOLS="" for symbol in {A..Z} {a..z} {0..9}; do SYMBOLS=$SYMBOLS$symbol; done SYMBOLS=$SYMBOLS"!@#$%&*()?/\{}-+_=.," # Строка со всеми символами создана. # Теперь нам надо в цикле с количеством итераций равным длине пароля # случайным образом взять один символ и добавить его в строку, содержащую пароль. PWD_LENGTH=16 # длина пароля PASSWORD="" # переменная для хранения пароля RANDOM=256 # инициализация генератора случайных чисел for i in `seq 1 $PWD_LENGTH` do PASSWORD=$PASSWORD${SYMBOLS:$(expr $RANDOM % ${#SYMBOLS}):1} done echo $PASSWORD

Вот и всё. Это весь скрипт. И с его помощью мы можем получить пароль, который удовлетворяет всем распространенным требованиям безопасности. Осталась только одна проблема — запомнить его.

Pwgen - приложение которое генерирует случайные, бессмысленные, но удобные для произнесения пароли. Они могут содержать, как только строчные буквы, так и комбинации строчных, заглавных букв и цифр. Заглавные буквы и цифры помещаются в пароль таким образом, чтобы пользователь легко мог запомнить их позицию.

Часто, нам нужно придумать пароль, который по сложности был достаточно надежен, это задачка не из легких. Особенно если у вас имеется сайт и вам нужно создать 10 пользователей, в течении 10 мин, вы можете все это выполнить с помощью данного приложения.

  • Хотя не так все здесь удобно как в приложении KeePassX о котором, я писал немного ранее.

Данное приложение не просто рандомно генерирует пароли по заданным критериям, но и делает их достаточно сложными для подбора, но очень легкими для запоминания человеком.

Синтаксис работы с программой следующий:

Pwgen [ OPTION ] [ pw_length ] [ num_pw ]

Полный перечень справочной информации по данном приложении, вы можете увидеть, введя в консоли man pwgen. Ниже привожу основные опции которые вам могут потребоваться:

  • -c: Включить в пароль хотя бы одну большую букву
  • -A: Не использовать большие буквы при создании пароля.
  • -n: Включить в пароль хотя-бы одну цифру.
  • -0: Не использовать цифры
  • -y: Включить в пароль хотя бы один специальный символ.

Установка Pwgen

sudo apt install pwgen

Так же, уточню, данное приложение запускается лишь через терминал и никакой графической оболочки не имеет, только с консоли.
Наведу пример как работает приложение и как генерирует набор паролей по заданным параметрам.

Если вам нужно просто пароли сгенерировать, выполните просто команду - pwgen .