Schnell mal auf einem Unix-artigen Betriebssystem ein sicheres Passwort erzeugen, geht so:
echo `cat /dev/urandom | tr -cd [:alnum:] | head -c 12`;
Erklärung:
/dev/random
ist unter Unix ein virtuelles Gerät welches zufällige Werte erzeugt. Allerdings ist /dev/random
blocking, Das heißt es blockiert wenn alle Werte aufgebraucht sind und keine neuen zur Verfügung stehen. /dev/urandom
ist wie /dev/random
blockiert aber nicht, desshalb ist es hierfür die bessere Wahl.
Der Befehl cat
gibt einfach den Inhalt von irgendwas (Datei, Input,…) auf der Konsole aus. cat /dev/urandom
gibt also einfach die von /dev/urandom
erzeugten Zeichen aus.
Mit einem Pipesymbol ( |
) lenkt die Ausgabe vom vorangestellten Ausdruck (also von cat /dev/urandom
) an den nachfolgenden Ausdruck also tr -cd [:alnum:]
.
Der Befehl tr -cd [:alnum:]
schneidet alles aus dem Stream (von /dev/urandom) raus was kein alphanumerisches Zeichen ([:alnum:]
) ist. /dev/urandom spucken nicht nur druckbare Zeichen aus sondern beliebige bytes, also auch Zeichen die man nicht so einfach Darstellen kann und eben auch nur schwer eingeben. Für Passwörter ungeeignet, eingeben muss man es ja meistens irgendwie.
Den nur noch aus alphanumerischen Zeichen bestehende Stream von zufälligen Bytes wird nun wider mit einem Pipesymbol an den Befehl head
übergeben.
Der Befehl head
zeigt den Beginn einer Datei an. Mit der Option -c 12
sagt man head
dass es 12 Zeichen anzeigen soll.
So erhält man also ein zufälliges 12 stelliges Passwort. Durch ändern des Wertes der Option kann man auch längere oder kürzere Passwörter generieren. Wer gerne auch Sonderzeichen im Passwort haben möchte kann als Option von tr
statt [:alnum:]
einfach [:print:]
nutzen.
Hinweis für Mac User
Unter Mac OS X muss man die Sprache auf C
setzen damit das funktioniert, ansonsten bekommt man eine Fehlermeldung wie die folgende tr: Illegal byte sequence
Das folgende Beispiel zeigt wie es auch unter Mac OS geht:
echo `LANG=C tr -cd ‘[:alnum:]‘</dev/urandom|head -c 12`
Einrichten
Damit man nicht jedes mal die ganze Zeile tippen muss kann man sich das natürlich auch in die profile datei seiner Shell schreiben.
## aliases to generate passwords
alias mkpasswd_strong='echo `LANG=C tr -cd ‘[:alnum:]‘</dev/urandom|head -c 64`'
alias mkpasswd_hex='echo `LANG=C tr -cd ‘[:xdigit:]‘</dev/urandom|head -c 64`'
alias mkpasswd='echo `LANG=C tr -cd ‘[:alnum:]‘</dev/urandom|head -c 12`'
Nach einem Neustart, oder nachdem man die profile datei neu eingelesen hat (source ~/.bash_profile
) kann man dann mit einem shell kommando passwörter erzeugen. Zum Beispiel so:
$> mkpasswd
SAufK6usdhwd
$>