GNU/Linux >> Belajar Linux >  >> Linux

Satu liner untuk membuat kata sandi di linux?

Itu tergantung pada apa yang Anda maksud dengan "dapat dibaca". Jika Anda hanya ingin menggunakan karakter heksadesimal, Anda memerlukan 32 karakter untuk mencapai 128 bit entropi; baris ini akan berfungsi (hanya menggunakan perintah dari coreutils paket):

head -c16 /dev/urandom | md5sum

Varian ini menghasilkan kata sandi dengan hanya huruf kecil, dari 'a' hingga 'p' (ini yang Anda inginkan jika Anda harus "mengetik" kata sandi pada ponsel cerdas):

head -c16 /dev/urandom | md5sum | tr 0-9 g-p

Jika Anda ingin mengetik satu karakter lebih sedikit, coba ini:

head -16 /dev/urandom | md5sum

(Kemungkinan mendapatkan semua 16 byte acak pertama sebagai 0x0A, yaitu karakter "baris baru", adalah 2, sehingga baris ini masih mendapatkan 128 bit entropi.)

Masih membatasi diri Anda pada perintah dari coreutils , Anda dapat melakukan ini:

mktemp -u XXXXXXXXXXXXXXXXXXXXXX

Yang ini menghasilkan kata sandi 22 karakter, menggunakan /dev/urandom sebagai sumber internal keacakan (saya memeriksa kode sumber, dan strace konfirmasi panggilan). Karakternya adalah huruf (huruf besar dan kecil) dan angka; karena 62 lebih besar dari 2, 22 karakter sudah cukup.

Satu lagi:

od -An -x /dev/urandom | head -1

ini menampilkan delapan urutan dari empat digit heksadesimal. Bisa dibilang, pembagian menjadi urutan kecil ini dapat membantu membaca.

Untuk baris yang lebih panjang dan jenis kata sandi yang cukup berbeda, coba ini:

for i in {1..8} ; do head -$(expr $(head -c7 /dev/urandom | od -An -t dL) % $(wc -l < /usr/share/dict/british-english)) /usr/share/dict/british-english | tail -1 ; done

(yang ini hanya berfungsi pada host 64-bit; apakah Anda akan memperhatikan alasannya?). Selain coreutils , versi itu juga memerlukan file kamus, ini untuk bahasa Inggris Britania.


Beberapa saran luar biasa di jawaban lain. Saya menemukan bahwa makepasswd tidak tersedia di mana-mana, dan menggunakan tr (sedikit) rumit, jadi ada opsi lain menggunakan OpenSSL:

openssl rand -base64 16

Angkanya adalah jumlah byte acak - jadi 16 byte untuk entropi 128-bit.


Menggunakan pwgen

Oneliner paling sederhana yang pernah ada:

pwgen

Itu mencoba membuat kata sandi yang mudah diingat. Untuk menonaktifkannya dan membuat kata sandi yang lebih aman, gunakan --secure atau -s bendera.

pwgen -s

Apakah kata sandi yang dihasilkan terlalu panjang? Terlalu pendek? Cukup tambahkan panjang yang diinginkan:

pwgen 9
# Or
pwgen -s 9
# Or
pwgen 9 -s

Alat serupa

Saya kebetulan tahu pwgen, ada alat lain di luar sana. Anda dapat menemukannya menggunakan fungsi pencarian dari distribusi Anda. Di Debian ini adalah:

apt-cache search password generator

Itu melakukan pencarian yang tepat (meskipun case-insensitive). Menggunakan password generat malah memperluas pencarian.

Sebelum menginstal paket, ada baiknya melihat deskripsinya. Sekali lagi di Debian:

apt-cache show $DESIRED_PACKAGE
# E.g.
apt-cache show pwgen

Alat yang bisa saya temukan dengan cara ini:

  • pwgen
  • makepasswd
  • apg
  • otp (dimaksudkan untuk pembalut sekali pakai, tidak disarankan)
  • gpw (sangat berfokus pada pengucapan, tidak disarankan)

Menggunakan alat standar Unix

Tidak semua sistem memiliki pwgen yang tersedia. Seperti yang dijawab orang lain, Anda dapat menggunakan md5sum atau sha256sum , tetapi itu hanya menghasilkan 0-9 dan a-f. Tidak ada huruf g-z atau campuran, apalagi karakter khusus. Lebih baik memfilter karakter yang tidak dapat dicetak dari /dev/urandom sampai Anda memiliki kata sandi dengan panjang yang diinginkan:

cat /dev/urandom | tr -cd '@-~' | head -c 8

Yang memberikan sesuatu seperti XiVsdn[y atau [email protected]^lY . Anda dapat mengubah 8 di bagian akhir untuk panjang kata sandi yang diinginkan. Anda juga dapat mengubah @-~ bagian untuk membatasi karakter. Misalnya ini hanya akan mencetak karakter alfanumerik:

cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c 8

Ini hampir identik dengan pwgen -s akan melakukan dan memberikan kata sandi seperti nZiUzNtE .

Sebagai bonus, tr alat disertakan di hampir setiap sistem operasi (Mac OS X, GNU/Linux, Android/Linux, Solaris, FreeBSD, dll.) kecuali Microsoft Windows.


Linux
  1. Cara Membuat Script Perintah Linux

  2. Jumble Password – Buat ID dan Kata Sandi Unik di Linux

  3. Buat file swap Linux

  1. Hasilkan kata sandi di baris perintah Linux

  2. Cara Membuat Swap di Linux

  3. Cara membuat layanan Systemd di Linux

  1. Cara membuat file swap di Linux

  2. Linux ln perintah

  3. Satu perintah untuk membuat direktori dan file di dalamnya perintah linux