Linux에서 강력한 비밀번호를 만드는 방법은 무엇입니까?

Linux에서 강력한 비밀번호를 만드는 방법은 무엇입니까?

Linux에서 (일반 사용자와 관리자 모두) 강력한 비밀번호를 생성하는 방법과 이를 수행하는 특정 프로그램이 있는지 궁금합니다.

답변1

pwgen비밀번호를 생성하는 많은 프로그램 중 하나입니다.

답변2

개인적으로 생성된 비밀번호는 기억하기 매우 어렵기 때문에 비밀번호 생성기를 사용하지 않는 것을 선호하지만, 한 가지 휴대용 솔루션은 다음을 사용하는 것입니다./dev/urandom

특수 문자를 포함하지 않는 임의의 비밀번호 생성 길이는 10자입니다.

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

tr이는 /dev/urandom에서 바이트를 가져와 명령 에 지정된 패턴에 맞지 않는 바이트를 삭제하고 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 비밀번호 생성기 인터페이스는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보