Aprenda 8 formas diferentes de generar una contraseña aleatoria en Linux utilizando comandos nativos de Linux o utilidades de terceros.

En este artículo, lo guiaremos a través de varias formas diferentes de generar una contraseña aleatoria en la terminal de Linux. Pocos de ellos usan comandos nativos de Linux y otros usan herramientas o utilidades de terceros que se pueden instalar fácilmente en la máquina Linux. Aquí estamos viendo comandos nativos como, openssl
dd, md5sum
, tr
, urandom
y herramientas de terceros como mkpasswd, randpw, pwgen, spw, gpg, xkcdpass, diceware, revelacion, keepaasx, passwordmaker.
En realidad, estas son formas de obtener una cadena alfanumérica aleatoria que se puede utilizar como contraseña. Las contraseñas aleatorias se pueden usar para nuevos usuarios para que haya unicidad sin importar cuán grande sea su base de usuarios. Sin más demora, pasemos a esas 15 formas diferentes de generar la contraseña aleatoria en Linux.
Generar contraseña usando la utilidad mkpasswd
mkpasswd
viene con la instalación de expect
paquete en sistemas basados en RHEL. En sistemas basados en Debian mkpasswd
viene con el paquete whois
. Intentando instalar mkpasswd
el paquete dará como resultado un error –
No hay paquete mkpasswd disponible. en el sistema RHEL y E:No se puede localizar el paquete mkpasswd en Debian basado.
Así que instale sus paquetes principales como se mencionó anteriormente y estará listo para comenzar.
Ejecute mkpasswd
para obtener contraseñas
root@kerneltalks# mkpasswd << on RHEL zt*hGW65c root@kerneltalks# mkpasswd teststring << on Ubuntu XnlrKxYOJ3vik
El comando se comporta de manera diferente en diferentes sistemas, así que trabaje en consecuencia. Hay muchos interruptores que se pueden usar para controlar los parámetros de longitud, etc. Puede explorarlos desde las páginas man.
Generar contraseña usando OpenSSL
OpenSSL viene integrado con casi todas las distribuciones de Linux. Podemos usar su función aleatoria para generar una cadena alfanumérica que se puede usar como contraseña.
root@kerneltalks # openssl rand -base64 10 nU9LlHO5nsuUvw==
Aquí, estamos usando base64
codificación con función aleatoria y último dígito para el argumento a base64
codificación.
Generar contraseña usando urandom
El archivo del dispositivo /dev/urandom
es otra fuente de obtener caracteres aleatorios. Estamos usando tr
Función y recorte de salida para obtener la cadena aleatoria para usar como contraseña.
root@kerneltalks # strings /dev/urandom |tr -dc A-Za-z0-9 | head -c20; echo UiXtr0NAOSIkqtjK4c0X
comando dd para generar contraseña
Incluso podemos usar /dev/urandom
dispositivo junto con el comando dd para obtener una cadena de caracteres aleatorios.
root@kerneltalks# dd if=/dev/urandom bs=1 count=15|base64 -w 0 15+0 records in 15+0 records out 15 bytes (15 B) copied, 5.5484e-05 s, 270 kB/s QMsbe2XbrqAc2NmXp8D0
Necesitamos pasar la salida a través de base64
codificación para que sea legible por humanos. Puede jugar con el valor de conteo para obtener la longitud deseada. Para una salida mucho más limpia, redirija std2 a /dev/null
. El comando de limpieza es –
root@kerneltalks # dd if=/dev/urandom bs=1 count=15 2>/dev/null|base64 -w 0 F8c3a4joS+a3BdPN9C++
Usando md5sum para generar contraseña
¡Otra forma de obtener una matriz de caracteres aleatorios que se pueden usar como contraseña es calcular la suma de verificación MD5! Si sabe que el valor de la suma de comprobación parece caracteres aleatorios agrupados, podemos usarlo como contraseña. Asegúrese de usar la fuente como algo variable para que obtenga una suma de verificación diferente cada vez que ejecute el comando. Por ejemplo date
! el comando de fecha siempre produce cambios en la salida.
root@kerneltalks # date |md5sum 4d8ce5c42073c7e9ca4aeffd3d157102 -
Aquí pasamos date
salida de comando a md5sum
¡y obtén el hash de la suma de control! Puede usar el comando de corte para obtener la longitud deseada de la salida.
Generar contraseña usando pwgen
pwgen
El paquete viene con repositorios como EPEL. pwgen
está más enfocado en generar contraseñas que sean pronunciables pero que no sean una palabra del diccionario o que no estén en inglés simple. Es posible que no lo encuentre en el repositorio de distribución estándar. Instale el paquete y ejecute pwgen
dominio. ¡Boom!
root@kerneltalks # pwgen thu8Iox7 ahDeeQu8 Eexoh0ai oD8oozie ooPaeD9t meeNeiW2 Eip6ieph Ooh1tiet cootad7O Gohci0vo wah9Thoh Ohh3Ziur Ao1thoma ojoo6aeW Oochai4v ialaiLo5 aic2OaDa iexieQu8 Aesoh4Ie Eixou9ph ShiKoh0i uThohth7 taaN3fuu Iege0aeZ cah3zaiW Eephei0m AhTh8guo xah1Shoo uh8Iengo aifeev4E zoo4ohHa fieDei6c aorieP7k ahna9AKe uveeX7Hi Ohji5pho AigheV7u Akee9fae aeWeiW4a tiex8Oht
¡Se le presentará la lista de contraseñas en su terminal! ¿Qué más quieres? Está bien. Todavía quieres explorar, pwgen
viene con muchas opciones personalizadas que se pueden consultar para la página de manual.
Generar contraseña usando la herramienta gpg
GPG es una herramienta de encriptación y firma OpenPGP. En su mayoría, la herramienta gpg viene preinstalada (al menos está en mi RHEL7). Pero si no, puedes buscar gpg
o gpg2
paquete e instalarlo.
Use el siguiente comando para generar una contraseña desde la herramienta gpg.
root@kerneltalks # gpg --gen-random --armor 1 12 mL8i+PKZ3IuN6a7a
Aquí estamos pasando generar un interruptor de secuencia de bytes aleatorios (--gen-random
) de calidad 1 (primer argumento) con una cuenta de 12 (segundo argumento). Cambiar --armor
asegura que la salida sea base64
codificado.
Generar contraseña usando xkcdpass
El famoso sitio web de humor geek xkcd publicó una publicación muy interesante sobre contraseñas memorables pero aún complejas. Puedes verlo aquí. Entonces xkcdpass
¡La herramienta se inspiró en esta publicación e hizo su trabajo! Es un paquete de python y está disponible en el sitio web oficial de python aquí
Todas las instrucciones de instalación y uso se mencionan en esa página. Aquí están los pasos de instalación y los resultados de mi servidor RHEL de prueba para su referencia.
root@kerneltalks # wget https://pypi.python.org/packages/b4/d7/3253bd2964390e034cf0bba227db96d94de361454530dc056d8c1c096abc/xkcdpass-1.14.3.tar.gz#md5=5f15d52f1d36207b07391f7a25c7965f --2018-01-23 19:09:17-- https://pypi.python.org/packages/b4/d7/3253bd2964390e034cf0bba227db96d94de361454530dc056d8c1c096abc/xkcdpass-1.14.3.tar.gz Resolving pypi.python.org (pypi.python.org)... 151.101.32.223, 2a04:4e42:8::223 Connecting to pypi.python.org (pypi.python.org)|151.101.32.223|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 871848 (851K) [binary/octet-stream] Saving to: ‘xkcdpass-1.14.3.tar.gz’ 100%[==============================================================================================================================>] 871,848 --.-K/s in 0.01s 2018-01-23 19:09:17 (63.9 MB/s) - ‘xkcdpass-1.14.3.tar.gz’ saved [871848/871848] root@kerneltalks # tar -xvf xkcdpass-1.14.3.tar.gz xkcdpass-1.14.3/ xkcdpass-1.14.3/examples/ xkcdpass-1.14.3/examples/example_import.py xkcdpass-1.14.3/examples/example_json.py xkcdpass-1.14.3/examples/example_postprocess.py xkcdpass-1.14.3/LICENSE.BSD xkcdpass-1.14.3/MANIFEST.in xkcdpass-1.14.3/PKG-INFO xkcdpass-1.14.3/README.rst xkcdpass-1.14.3/setup.cfg xkcdpass-1.14.3/setup.py xkcdpass-1.14.3/tests/ xkcdpass-1.14.3/tests/test_list.txt xkcdpass-1.14.3/tests/test_xkcdpass.py xkcdpass-1.14.3/tests/__init__.py xkcdpass-1.14.3/xkcdpass/ xkcdpass-1.14.3/xkcdpass/static/ xkcdpass-1.14.3/xkcdpass/static/eff-long xkcdpass-1.14.3/xkcdpass/static/eff-short xkcdpass-1.14.3/xkcdpass/static/eff-special xkcdpass-1.14.3/xkcdpass/static/fin-kotus xkcdpass-1.14.3/xkcdpass/static/ita-wiki xkcdpass-1.14.3/xkcdpass/static/legacy xkcdpass-1.14.3/xkcdpass/static/spa-mich xkcdpass-1.14.3/xkcdpass/xkcd_password.py xkcdpass-1.14.3/xkcdpass/__init__.py xkcdpass-1.14.3/xkcdpass.1 xkcdpass-1.14.3/xkcdpass.egg-info/ xkcdpass-1.14.3/xkcdpass.egg-info/dependency_links.txt xkcdpass-1.14.3/xkcdpass.egg-info/entry_points.txt xkcdpass-1.14.3/xkcdpass.egg-info/not-zip-safe xkcdpass-1.14.3/xkcdpass.egg-info/PKG-INFO xkcdpass-1.14.3/xkcdpass.egg-info/SOURCES.txt xkcdpass-1.14.3/xkcdpass.egg-info/top_level.txt root@kerneltalks # cd xkcdpass-1.14.3 root@kerneltalks # python setup.py install running install running bdist_egg running egg_info writing xkcdpass.egg-info/PKG-INFO writing top-level names to xkcdpass.egg-info/top_level.txt writing dependency_links to xkcdpass.egg-info/dependency_links.txt writing entry points to xkcdpass.egg-info/entry_points.txt reading manifest file 'xkcdpass.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'xkcdpass.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py creating build creating build/lib creating build/lib/xkcdpass copying xkcdpass/xkcd_password.py -> build/lib/xkcdpass copying xkcdpass/__init__.py -> build/lib/xkcdpass creating build/lib/xkcdpass/static copying xkcdpass/static/eff-long -> build/lib/xkcdpass/static copying xkcdpass/static/eff-short -> build/lib/xkcdpass/static copying xkcdpass/static/eff-special -> build/lib/xkcdpass/static copying xkcdpass/static/fin-kotus -> build/lib/xkcdpass/static copying xkcdpass/static/ita-wiki -> build/lib/xkcdpass/static copying xkcdpass/static/legacy -> build/lib/xkcdpass/static copying xkcdpass/static/spa-mich -> build/lib/xkcdpass/static creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/egg creating build/bdist.linux-x86_64/egg/xkcdpass copying build/lib/xkcdpass/xkcd_password.py -> build/bdist.linux-x86_64/egg/xkcdpass copying build/lib/xkcdpass/__init__.py -> build/bdist.linux-x86_64/egg/xkcdpass creating build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/eff-long -> build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/eff-short -> build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/eff-special -> build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/fin-kotus -> build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/ita-wiki -> build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/legacy -> build/bdist.linux-x86_64/egg/xkcdpass/static copying build/lib/xkcdpass/static/spa-mich -> build/bdist.linux-x86_64/egg/xkcdpass/static byte-compiling build/bdist.linux-x86_64/egg/xkcdpass/xkcd_password.py to xkcd_password.pyc byte-compiling build/bdist.linux-x86_64/egg/xkcdpass/__init__.py to __init__.pyc creating build/bdist.linux-x86_64/egg/EGG-INFO copying xkcdpass.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying xkcdpass.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying xkcdpass.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying xkcdpass.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying xkcdpass.egg-info/not-zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO copying xkcdpass.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO creating dist creating 'dist/xkcdpass-1.14.3-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing xkcdpass-1.14.3-py2.7.egg creating /usr/lib/python2.7/site-packages/xkcdpass-1.14.3-py2.7.egg Extracting xkcdpass-1.14.3-py2.7.egg to /usr/lib/python2.7/site-packages Adding xkcdpass 1.14.3 to easy-install.pth file Installing xkcdpass script to /usr/bin Installed /usr/lib/python2.7/site-packages/xkcdpass-1.14.3-py2.7.egg Processing dependencies for xkcdpass==1.14.3 Finished processing dependencies for xkcdpass==1.14.3
Ahora ejecutando xkcdpass
comando le dará un conjunto aleatorio de palabras del diccionario como a continuación –
root@kerneltalks # xkcdpass broadside unpadded osmosis statistic cosmetics lugged
Puede usar estas palabras como entrada para otros comandos como md5sum
para obtener la contraseña aleatoria (como se muestra a continuación) o incluso puede usar la letra N de cada palabra para formar su contraseña.
root@kerneltalks # xkcdpass |md5sum 45f2ec9b3ca980c7afbd100268c74819 - root@kerneltalks # xkcdpass |md5sum ad79546e8350744845c001d8836f2ff2 -
O incluso puede usar todas esas palabras juntas como una contraseña tan larga que es fácil de recordar para un usuario y muy difícil de descifrar usando el programa de computadora.
Hay herramientas como Diceware, KeePassX, Revelation, PasswordMaker para Linux que se pueden considerar para crear contraseñas aleatorias seguras.