Come utilizzare le password criptate negli script Bash

Jun 30, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

Se sei costretto a utilizzare uno script Linux per connettersi a una risorsa protetta da password, probabilmente si sente a disagio a mettere quella password nello script. OpenSSL risolve quel problema per te.

Password e script

Non è una grande idea mettere le password negli script della shell. In effetti, è davvero una cattiva idea. Se lo script cade nelle mani sbagliate, tutti quelli che leggono possono vedere cosa è la password. Ma se sei costretto a usare uno script, cos'altro puoi fare?

È possibile inserire manualmente la password quando il processo raggiunge quel punto, ma se lo script sta per correre incustodito, che non funzionerà. Per fortuna, c'è un'alternativa alla codifica rigida le password nello script. Controintuitivamente, utilizza una password diversa per ottenere questo, insieme ad una forte crittografia.

Nello scenario di esempio, dobbiamo effettuare una connessione remota con un computer Fedora Linux dal nostro computer Ubuntu. Useremo uno script di shell bash per creare una connessione SSH al computer Fedora. Lo script deve funzionare incustodito e non vogliamo mettere la password per l'account remoto nello script. Non possiamo usare le chiavi SSH in questo caso, perché stiamo fingendo di non avere alcun controllo o diritti di amministratore sul computer Fedora.

Faremo uso del noto noto OpenSSL Toolkit. per gestire la crittografia e un'utilità chiamata sshpass. Per alimentare la password nel comando ssh.

IMPARENTATO: Come creare e installare le chiavi SSH dal guscio Linux

Installazione di openssl e sshpass

Poiché molti altri strumenti di crittografia e sicurezza utilizzano OpenSSL, potrebbe essere già installato sul tuo computer. Tuttavia, se non lo è, ci vuole solo un momento da installare.

Su Ubuntu, digita questo comando:

 sudo apt ottiene openssl 

Installare sshpass. , usa questo comando:

 Sudo APT Installare SSHPASS 

Su Fedora, è necessario digitare:

 Sudo DNF Installa OpenSSL 

Il comando da installare sshpass. è:

 Sudo DNF Installare SSHPASS 

Su Manjaro Linux, possiamo installare OpenSSL con:

 sudo pacman -sy opensl 

Infine, da installare sshpass. , usa questo comando:

 sudo pacman -sy sshpass 

Crittografia sulla riga di comando

Prima di entrare usando il openssl. Comando con gli script, diventiamo familiarità con esso usandolo sulla riga di comando. Diciamo che la password per l'account sul computer remoto è Rusty! Herring.pitshaft. . Ci crittiamo quella password usando openssl. .

Dobbiamo fornire una password di crittografia quando lo facciamo. La password di crittografia viene utilizzata nei processi di crittografia e decrittografia. Ci sono molti parametri e opzioni nel openssl. comando. Daremo un'occhiata a ciascuno di loro in un momento.

 Echo 'arrugginito! Herring.pitshaft' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass: 'pick.your.password' 

Stiamo usando eco Per inviare la password del conto remoto attraverso un tubo e nel openssl. comando.

Il openssl. I parametri sono:

  • enc -aes-256-cbc : Il tipo di codifica. Stiamo usando Standard Advanced Encryption. Chiave a chiave a 256 bit con catena a blocchi di cifratura.
  • -MD SHA512. : Il tipo di digest (hash) del messaggio. Stiamo usando l'algoritmo crittografico SHA512.
  • -un : Questo dice openssl. Per applicare la codifica di base-64 dopo la fase di crittografia e prima della fase di decrittografia.
  • -PBKDF2. : Utilizzo della funzione Derivazione tasti basata su password 2 (PBKDF2) rende molto più difficile per un attacco di forza bruta per avere successo nel indovinare la password. PBKDF2 richiede molti calcoli per eseguire la crittografia. Un utente malintenzionato avrebbe bisogno di replicare tutti questi calcoli.
  • -Iter 100000. : Imposta il numero di calcoli che PBKDF2 utilizzerà.
  • -sale : L'utilizzo di un valore salato applicato a caso rende l'uscita crittografata diversa ogni volta, anche se il testo normale è lo stesso.
  • -Pass Pass: 'pick.your.password' : La password avremo bisogno di utilizzare per decifrare la password remota crittografata. Sostituto pick.your.password. con una password robusta della tua scelta.

La versione crittografata del nostro Rusty! Herring.pitshaft. La password è scritta nella finestra del terminale.

Per decrittografare questo, dobbiamo passare quella stringa crittografata in openssl. Con gli stessi parametri che abbiamo usato per crittografare, ma aggiungendo nel -D (decrittografia) opzione.

 echo u2fsdgvkx19iiirnhesg + wm / ukjtzjwnyopjzphyrdkyzh5lvzrpigo1s0gozu46 | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass: 'pick.your.password' 

La stringa è decifrata e il nostro testo originale: la password per l'account utente remoto, è scritta nella finestra del terminale.

Ciò dimostra che possiamo crittografare in modo sicuro la nostra password dell'account utente remoto. Possiamo anche decrittografarlo quando ne abbiamo bisogno utilizzando la password che abbiamo fornito nella fase di crittografia.

Ma questo migliora effettivamente la nostra situazione? Se abbiamo bisogno della password di crittografia per decifrare la password del conto remoto, sicuramente la password di decrittografia dovrà essere nello script? Bene, sì, lo fa. Ma la password dell'account utente remota crittografata verrà memorizzata in un file nascosto diverso. Le autorizzazioni sul file impediranno a chiunque, ma tu e l'utente root del sistema, ovviamente, dall'accesso ad accedervi.

Per inviare l'output dal comando di crittografia a un file, possiamo utilizzare il reindirizzamento. Il file è chiamato ".Secret_vault.txt." Abbiamo cambiato la password di crittografia a qualcosa di più robusto.

 Echo 'arrugginito! Herring.pitshaft' | openssl enc -AES-256-CBC -MD SHA512 -A -PBKDF2 -Iter 100000 -Salt -Pass Pass: 'Secret # Vault! Password' & GT; .Secret_vault.txt 

Non succede nulla di visibile, ma la password è crittografata e inviata al file ".secret_vault.txt".

Possiamo testare che ha funzionato decrittografando la password nel file nascosto. Si noti che stiamo usando gatto qui, no. eco .

 Cat .Secret_Vault.txt | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -Iter 100000 -Salt -Pass Pass: 'Secret # Vault! Password' 

La password è decrittografata con successo dai dati nel file. Bene utilizzo chmod. Per modificare le autorizzazioni su questo file in modo che nessun altro possa accedervi.

 CHMOD 600 .Secret_Vault.txt 
 ls -l .secret_vault.txt 

L'utilizzo di una maschera di autorizzazioni di 600 rimuove tutto l'accesso per chiunque altro rispetto al proprietario del file. Ora possiamo passare a scrivere il nostro script.

IMPARENTATO: Come utilizzare il comando CHMOD su Linux

Usando openssl in uno script

Il nostro script è piuttosto semplice:

 #! / Bin / Bash

# Nome dell'account remoto
Remoto_User = Geek.

# Password per l'account remoto
Remoto_passwd = $ (cat .secret_vault.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass: 'Secret # Vault! Password')

# Computer remoto
Remoto_linux = fedora-34.local

# Connetti al computer remoto e inserisci un timestamp in un file chiamato script.log
sshpass -p $ remote_passwd ssh -t $ remote_user @ $ remote_linux & lt; & lt; _REMOTE_COMMANDS.
ECHO $ ​​utente "-" $ (data) & GT; & GT; /home/imremote_user/script.log.
_remote_commands 
  • Abbiamo impostato una variabile chiamata Remoto_User. a "geek".
  • Quindi impostiamo una variabile chiamata Remoto_passwd. Al valore della password decifrata tirata dal file ".secret_vault.txt", utilizzando lo stesso comando che abbiamo usato un momento fa.
  • La posizione del computer remota è memorizzata in una variabile chiamata Remoto_linux. .

Con quell'informazione, possiamo usare il ssh. comando per connettersi al computer remoto.

  • Il sshpass. Comando è il primo comando sulla linea di connessione. Lo usiamo con il -P (Password) opzione. Ciò consente di specificare la password che dovrebbe essere inviata al ssh. comando.
  • Noi usiamo il -T (Disabilitare l'opzione Pseudo-Terminal Assegnation) con ssh. Perché non abbiamo bisogno di avere un pseudo-TTY a noi sul computer remoto.

Stiamo usando un breve qui documento. Per passare un comando al computer remoto. Tutto tra i due _REMOTE_COMMANDS. Le stringhe vengono inviate come istruzioni per la sessione utente sul computer remoto, in questo caso, è una singola riga di script bash.

Il comando inviato al computer remoto è sufficiente registrare il nome dell'account utente e un timestamp in un file chiamato "script.log".

Copia e incolla lo script in un editor e salvalo in un file chiamato "go-remote.sh". Ricordarsi di modificare i dettagli per riflettere l'indirizzo del proprio computer remoto, account utente remoto e password dell'account remoto.

Utilizzo chmod. per eseguire lo script eseguibile.

 CHMOD + X Go-remote.sh 

Tutto ciò che è rimasto è provarlo. Sinciamo il nostro script.

 ./ go-remote.sh 

Poiché il nostro script è un modello minimalista per uno script non presidiato, non c'è uscita al terminale. Ma se controlliamo il file "script.log" sul computer Fedora, possiamo vedere che le connessioni remote sono state apportate con successo e che il file "script.log" è stato aggiornato con timestamps.

 Cat Script.log 

La tua password è privata

La password del tuo account remoto non è registrata nello script.

E anche se la password di decrittografia è, Nello script, nessun altro può accedere al file ".secret_vault.txt" per decrittografarlo e recuperare la password dell'account remoto.


Linux - Articoli più popolari

Come uccidere i processi di zombie su Linux

Linux Nov 25, 2025

Fatmawati Achmad Zaenuri / Shutterstock I programmi che sono scarsamente scritti o si esibiscono male possono andarsene Processi di zombie in agguat..


Come installare il segnale Desktop su Linux

Linux Jan 22, 2026

Eliseu Geisler / Shutterstock.com Segnale è L'app di messaggistica smartphone focalizzata sulla privacy sembra usare . È inoltre possib..


Come elaborare una riga di file per linea in uno script Bash Linux

Linux Feb 3, 2026

Fatmawati Achmad Zaenuri / Shutterstock E 'abbastanza facile da leggere il contenuto di una riga file di testo di Linux per riga in un guscio di script finch..


Come eseguire le app Android su Linux

Linux Oct 19, 2025

quietbits / shutterstock.com. Hai mai voluto eseguire un'app Android su Linux, ma non voleva scherzare con i ponti di debug, gli ambienti di sviluppo o le app ..


10 comandi di base Linux per principianti

Linux Oct 13, 2025

Basta iniziare su Linux? Rendere comodo con la riga di comando è essenziale. Se hai già familiarità con le utilità della riga di comando, troverai che Linux e Mac condivideranno molto ..


Come disattivare un PC Ubuntu

Linux Oct 12, 2025

Come tutti i personal computer, un PC che esegue il Ubuntu. Il sistema operativo desktop deve essere disattivato di tanto in tanto. La chiusura di Ubuntu è facile e hai diversi..


Si può installare Linux su un M1 di Apple Silicon Mac?

Linux Nov 12, 2025

Non tutti comprano un Mac per eseguire esclusivamente macos. La cattiva notizia è che al novembre del 2021, il supporto nativo Linux sul silicio di Apple non è ancora possibile. Il pro..


Come impostare un indirizzo IP statico in Ubuntu

Linux Oct 17, 2025

La rete domestica si basa sugli indirizzi IP per instradare i dati tra i dispositivi e talvolta sulla riconnessione alla rete può cambiare l'indirizzo di un dispositivo. Ecco come dare a un co..


Categorie