Linux で強力なパスワードを作成するにはどうすればいいですか?

Linux で強力なパスワードを作成するにはどうすればいいですか?

Linux で強力なパスワード (通常ユーザーと管理者ユーザーの両方) を作成するにはどうすればよいのか、また、それを実行するための特定のプログラムがあるかどうか知りたいです。

答え1

パワーパスワードを生成するための多くのプログラムの1つです

答え2

個人的には、パスワード生成器は使いたくないのですが、生成されたパスワードは覚えにくいので、ポータブルな解決策の1つは、/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、少なくとも 1 つの特殊文字を強制的に含めようとするためです。これは、 コマンドを使用して行をfold10 個のグループにラップし、 を使用して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

さらに付け加えるとキーパスXこれにより、システム エントロピーを使用して、いくつかの便利な機能を備えた強力なパスワードを生成するオプションが提供されます (すべて GUI を使用)。また、パスワードを管理し、暗号化されたファイルに保存するオプションも提供されます。

KPX パスワード ジェネレーターのインターフェイスは次のようになります。

ここに画像の説明を入力してください

関連情報