Как создать надежные пароли в Linux?

Как создать надежные пароли в Linux?

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

решение1

pwgenодна из многих программ для генерации паролей

решение2

Лично я предпочитаю не использовать генератор паролей, так как сгенерированные пароли очень трудно запомнить, но одно из портативных решений — использовать/dev/urandom

Создание случайных паролей, не содержащих специальных символов, длиной 10 символов:

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10` 
dyxJRKldvp

Это работает путем извлечения байтов из /dev/urandom, удаления тех, которые не соответствуют шаблону, указанному в команде tr, и ограничения их до 10 символов с помощью head.

Создание случайных паролей, содержащих специальные символы, длиной 10 символов:

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=' | fold -w 10 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | head -n 1
MSF4wj@vP0

Это использует немного другую технику после trудаления нежелательных байтов, поскольку идея заключается в том, чтобы заставить его иметь по крайней мере один специальный символ. Это работает с использованием foldкоманды для переноса строки в группы по 10, затем с использованием grepдля извлечения только строк, содержащих специальный символ. headзатем извлекает первый пароль, который соответствует требованиям.

решение3

Я написал этот небольшой скрипт несколько лет назад и с тех пор им пользуюсь. Если что, то это интересное злоупотребление printfи использование прекрасной функции BASH, которую я, к сожалению, редко вижу в скриптах: typeset.

#!/usr/bin/env bash
# Released into public domain
# Aaron Bockover, 2005
# http://abock.org

typeset -i length; length=$1
typeset -i rounds; rounds=$2
[ $rounds -lt 1 ] && rounds=1
[ $length -lt 1 ] && {
    echo "Usage: $0 <length> [<rounds>]" 2>/dev/null; exit 1;
}
for ((i=0; i < $rounds; i++)); do
    for ((j=0; j < $length; j++)); do
        set=$(($RANDOM % 20))
        if   [ $set -le 6 ];  then o=65; l=26; # 35% uppercase
        elif [ $set -le 13 ]; then o=97; l=26; # 35% lowercase
        elif [ $set -le 17 ]; then o=48; l=10; # 20% numeric
        elif [ $set -le 18 ]; then o=58; l=7;  # 10% symbolic
        elif [ $set -le 19 ]; then o=33; l=15; fi
        ord=$(($o + $RANDOM % $l))
        printf \\$(($ord / 64 * 100 + $ord % 64 / 8 * 10 + $ord % 8))
    done
    echo
done

решение4

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

Вот как выглядит интерфейс генератора паролей KPX:

введите описание изображения здесь

Связанный контент