Cómo usar contraseñas cifradas en scripts de Shell en Linux

Los scripts Bash son una parte importante del trabajo de un administrador de sistemas. Le permiten automatizar tareas mundanas y críticas.

Una de las mejores cosas de los scripts es que pueden ejecutarse de forma independiente sin intervención humana, pero a veces puede ser un desafío automatizar tareas que requieren contraseñas de usuario. Veamos cómo puede automatizar de forma segura los scripts que requieren contraseñas sin comprometer la seguridad.

Crear un guión simple

Supongamos que desea crear un script simple que haga una copia de seguridad de su carpeta de inicio de Linux en una ubicación remota para que pueda restaurar fácilmente sus datos en caso de pérdida de datos.

Comience creando un archivo de script Bash en su carpeta de inicio, usando el comando táctil o cualquier otro método, y asígnele un nombre backup_home.sh . Siéntase libre de usar cualquier nombre y directorio de su agrado.

El guión utiliza el sincronizar comando, una poderosa herramienta de copia de archivos, para hacer una copia de seguridad de todos los archivos en su directorio de inicio local en un servidor remoto.

Copie el contenido del siguiente script y péguelo en su archivo Bash. Recuerde reemplazar el usuario john con el nombre correcto de su usuario doméstico local. También proporcione el nombre de usuario y la dirección IP correctos para el servidor remoto.

                      
                        
                          #!/bin/bash
                        
                        
#Copy data to a remote server
rsync -avl --mkpath /home/john user_name @remote _server/home/Backup

Si no tiene un servidor remoto para probar, simplemente puede instalar VirtualBox y configure una VM en su máquina local. Use el invitado de VM como su servidor remoto.

Guarda el archivo. Para ejecutar el script, debe otorgarle el permiso de ejecución mediante el comando sudo mod 755 . Todos los usuarios pueden ejecutar el script, pero solo el sudo los usuarios pueden modificar el archivo.

Finalmente, ejecute el script Bash desde la terminal usando el comando:

                      
                        ./backup_home.sh
                      
                    

Cada vez que ejecute este script, se le pedirá que ingrese la contraseña del servidor remoto. Esto no es ideal si desea ejecutar el script sin intervención humana, como cuando se usa Cron.

Automatización del inicio de sesión con contraseña

Instalar sshpass un proveedor de contraseñas no interactivo, en su PC local o en la PC desde la que ejecutará el script.

En distribuciones basadas en Debian

Si está en una distribución basada en Debian como Ubuntu , Pop!_OS y Lubuntu:

                      
                        sudo apt 
                        
                          update
                        
                         && sudo apt 
                        
                          install
                        
                         sshpass
                      
                    

En RHEL y Fedora

                      
                        dnf 
                        
                          install
                        
                         sshpass
                      
                    

Después de instalar sshpass, modifique el script para que se vea de la siguiente manera.

                      
                        
                          #!/bin/bash
                        
                        
#Copy data to a remote server
sshpass -p " yourpassword " rsync -avl --mkpath /home/john [email protected]_server/home/Backup

Aquí proporciona la contraseña en texto sin formato. Obviamente, esta no es la forma ideal, ya que no es segura y no es una buena práctica. Si el guión alguna vez cae en las manos equivocadas, está en serios problemas.

Para hacerlo más seguro, usaremos GnuPG, una herramienta de encriptación segura y de código abierto.

Cifrando su contraseña

GnuPG está instalado de forma predeterminada en la mayoría de los sistemas Linux, pero en caso de que no esté instalado en su sistema, aquí le mostramos cómo instalar GnuPG.

Crear un archivo oculto llamado misterios usando el comando toque .secretos . Dado que ocultamos el archivo de forma predeterminada como medida de seguridad adicional, así es como puede ver los archivos ocultos en Linux.

En el archivo de secretos, ingrese la contraseña de su PC remota y guárdela.

A continuación, cifre el archivo usando el gpg dominio.

                      
                        
                          sudo
                        
                        
                          gpg
                        
                        
                          .secrets
                        
                      
                    

Se le pedirá que ingrese una frase de contraseña segura y fuerte para abrir el archivo encriptado.

GnuPG creará un nuevo archivo con la extensión .gpg anexado al antiguo nombre de archivo. Su nuevo nombre de archivo debería ser ahora secretos.gpg asumiendo que usó el misterios Nombre del archivo.

Si ve el contenido de secrets.gpg usando el gato comando, se le presentará un texto incomprensible para mostrar que su contraseña está encriptada.

Para ver el contenido del archivo en texto sin formato, deberá descifrarlo con el siguiente comando (se le pedirá que ingrese la contraseña que estableció durante el cifrado):

                      
                        
                          gpg
                        
                        
                          -dq
                        
                        
                          secrect
                        
                        
                          .gpg
                        
                      
                    

Usar una contraseña cifrada en su script

Para usar la contraseña cifrada en la secuencia de comandos, actualice la secuencia de comandos de la siguiente manera:

                      
                        
                          #!/bin/bash
                        
                        
#Copy data to a remote server
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john user_name @remote _server/home/Backup

Vuelva a ejecutar los scripts de copia de seguridad y esta vez no se le solicitará una contraseña.

Automatice tareas con Bash Scripts

GnuGP se usa con frecuencia para proteger archivos y datos confidenciales en su PC y también es una excelente herramienta para proteger contraseñas en scripts Bash automatizados en Linux.

Hay muchas cosas que puede hacer con los scripts de Bash. Bash es una herramienta poderosa que puede ayudarlo a automatizar muchas cosas en Linux y aprender a escribir scripts de Bash es una inversión que vale la pena.

Related Posts