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

UnixForum





Библиотека сайта rus-linux.net

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

Оригинал: 10 Ways to Generate a Random Password from the Command Line
Автор: Lowell Heddings
Дата публикации: December 20 2014
Перевод: Н.Ромоданов
Дата перевода: февраль 2015 г.

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

Мы взяли все эти команды с сайта Command-Line Fu и для того, чтобы убедиться, что они работают, протестировали их на нашем компьютере с Linux. У вас в Windows с установленным пакетом Cygwin некоторые из них должны работать, хотя их все мы в такой ситуации не тестировали — протестировали лишь последний вариант и он определенно работает.

Генерация паролей случайным образом

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

В следующем методе используется алгоритм SHA для хэширования даты, затем вычисляется base64, а затем берутся первые 32 символа.

date +%s | sha256sum | base64 | head -c 32 ; echo

В следующем методе применяется встроенная возможность /dev/urandom и отфильтровываются только те символы, которые вы обычно используете в пароле. Затем выводятся первые 32 символа.

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;

В следующем примере применяется функция rand из пакета openssl, который, возможно, не установлен в вашей системе. Хорошо, что есть еще много других примеров, не так ли?

openssl rand -base64 32

Следующий пример аналогичный, но в нем используется функция urandom, с помощью которой выполняется обратная операция. Bash является очень мощным инструментом!

tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1

Вот еще один пример, использующий фильтры в командной строке; в нем строки берутся из файла, который в данном случае создается с помощью функции urandom.

strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo

Ниже более простой вариант использования функции urandom.

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6

В следующем примере применяется очень полезная команда dd.

dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev

Можно даже создавать случайный «левосторонний» пароль, который можно было бы вводить одной рукой.

</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""

Если вы постоянно собираетесь пользоваться одним из этих методов, то, вероятно, лучше всего оформить его в виде функции. В этом случае, как только вы один раз выполните следующую команду, вы сможете в любой момент с помощью команды randpw создать случайный пароль. Вы, вероятно, захотите, записать эту команду в виде файла ~/.bashrc.

randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}

Вы можете использовать аналогичный синтаксис для того, чтобы выполнить внутри функции что-нибудь другое - просто замените все внутри скобок { }.

А вот самый простой способ создать в пароль в командной строке, который работает в Linux, в Windows с Cygwin, и, вероятно, в Mac OS X. Я уверен, что некоторые скажут, что это не столь случайный пароль, как в других вариантах, но, честно говоря, подобной «случайности» вполне достаточно в случае, если вы собираетесь использовать пароль целиком.

date | md5sum

Да, эту команду даже достаточно легко запомнить.

Есть множество других способов, с помощью которых вы можете в командной строке Linux создать пароль случайным образом, например, с помощью команды mkpasswd, с помощью которой можно, в действительности, назначать пароль учетной записи пользователя Linux. А какой ваш любимый способ?