GNU/Linux >> Tutoriales Linux >  >> Linux

Automatización de contraseñas SSH en Linux con sshpass

[Nota del editor, 29 de noviembre de 2021:Todos los ejemplos de proporcionar una contraseña en la línea de comando incluyen el riesgo de que la contraseña se capture en el historial de shell del usuario (si es compatible) o sea visible para todos los usuarios del sistema en la lista de procesos. Los expertos en seguridad recomiendan eliminar todos los archivos y borrar los registros de shell.]

Conectar y transferir archivos a sistemas remotos es algo que los administradores de sistemas hacen todo el tiempo. Una herramienta esencial utilizada por muchos administradores de sistemas en plataformas Linux es SSH. SSH admite dos formas de autenticación:

  1. Autenticación de contraseña
  2. Autenticación de clave pública

La autenticación de clave pública se considera la forma más segura de estos dos métodos, aunque la autenticación de contraseña es la más popular y sencilla. Sin embargo, con la autenticación de contraseña, siempre se le pide al usuario que ingrese la contraseña. Esta repetición es tediosa. Además, SSH también requiere intervención manual cuando se usa en un script de shell. Si se necesita automatización al usar la autenticación de contraseña SSH, entonces una herramienta simple llamada sshpass es indispensable.

¿Qué es sshpass?

El sshpass La utilidad está diseñada para ejecutar SSH usando el keyboard-interactive modo de autenticación de contraseña, pero de forma no interactiva.

SSH utiliza el acceso TTY directo para garantizar que la contraseña sea efectivamente emitida por un usuario de teclado interactivo. sshpass ejecuta SSH en un TTY dedicado, engañando a SSH haciéndole creer que está obteniendo la contraseña de un usuario interactivo.

Instalar sshpass

Puede instalar sshpass con este simple comando:

# yum install sshpass

Usar sshpass

Especifique el comando que desea ejecutar después de sshpass opciones Normalmente, el comando es ssh con argumentos, pero también puede ser cualquier otro comando. Sin embargo, la solicitud de contraseña SSH está actualmente codificada en sshpass .

La sinopsis del sshpass comando se describe a continuación:

sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments

donde:

-ppassword
    The password is given on the command line. 
-ffilename
    The password is the first line of the file filename. 
-dnumber
    number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. 
-e
    The password is taken from the environment variable "SSHPASS".

Ejemplos

Para comprender mejor el valor y el uso de sshpass , veamos algunos ejemplos con varias utilidades diferentes, incluidas SSH, Rsync, Scp y GPG.

Ejemplo 1:SSH

Usa sshpass para iniciar sesión en un servidor remoto mediante SSH. Supongamos que la contraseña es !4u2tryhack . A continuación se muestran varias formas de utilizar las opciones de sshpass.

R. Utilice -p (esta se considera la opción menos segura y no debe usarse):

$ sshpass -p !4u2tryhack ssh [email protected]

El -p La opción se ve así cuando se usa en un script de shell:

$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]

B. Utilice el -f opción (la contraseña debe ser la primera línea del nombre del archivo):

$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]

El $ chmod 0400 pass_file es fundamental para garantizar la seguridad del archivo de contraseñas. El umask predeterminado en RHEL es 033, lo que permitiría la legibilidad mundial del archivo.

Aquí está el -f opción cuando se usa en script de shell:

$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]

C. Usa el -e opción (la contraseña debe ser la primera línea del nombre del archivo):

$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]

El -e La opción cuando se usa en el script de shell se ve así:

$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]

Ejemplo 2:Rsync

Usa sshpass con rsync :

$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/ 

Lo anterior usa el -e opción, que pasa la contraseña a la variable de entorno SSHPASS

Podemos usar el -f cambia así:

$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/

Ejemplo 3:Scp

Usa sshpass con scp:

$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html

Ejemplo 4:GPG

También puede usar sshpass con un archivo encriptado con GPG. Cuando -f se utiliza el interruptor, el archivo de referencia está en texto sin formato. Veamos cómo podemos cifrar un archivo con GPG y usarlo.

Primero, cree un archivo de la siguiente manera:

$ echo '!4u2tryhack' > .sshpasswd

Luego, cifre el archivo usando gpg comando:

$ gpg -c .sshpasswd

Elimina el archivo que contiene el texto sin formato:

$ rm .sshpasswd

Finalmente, utilícelo de la siguiente manera:

$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]

Resumir

sshpass es una herramienta sencilla que puede ser de gran ayuda para los administradores de sistemas. De ninguna manera, esto anula la forma más segura de autenticación SSH, que es la autenticación de clave pública. Sin embargo, sshpass también se puede agregar a la caja de herramientas del administrador del sistema.

[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]


Linux
  1. SSHPass:cómo acceder a un servidor mediante SSH mediante un script sin contraseña (no de forma interactiva)

  2. ¿Inicio de sesión Ssh con contraseña de texto claro como parámetro?

  3. Cómo deshabilitar el inicio de sesión SSH con contraseña

  4. Comando sshpass:autenticación de contraseña no interactiva con SSH

  5. Rsync con SSH solicitando contraseña remota

Prueba de contraseña SSH con Hydra en Kali Linux

Cómo deshabilitar la autenticación de contraseña SSH en Linux VPS

Comandos SSH en Linux con ejemplos de uso

Encuentra cuentas de usuario con contraseña vacía en Linux

Cómo pasar la contraseña al comando SSH en Linux

¿Cómo proteger GRUB con contraseña en Linux?