Cum se utilizează parolele criptate în scripturile Bash

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

Dacă sunteți obligat să utilizați un script Linux pentru a vă conecta la o resursă protejată prin parolă, probabil că vă simțiți neliniștiți pentru a pune această parolă în script. OpenSSL rezolvă problema pentru tine.

Parole și scripturi

Nu este o idee minunată să puneți parole în scripturi Shell. De fapt, este o idee foarte proastă. Dacă scenariul se încadrează în mâinile greșite, toți cei care citesc că poate vedea ce este parola. Dar dacă sunteți forțat să utilizați un script, ce altceva puteți face?

Puteți introduce parola manual când procesul atinge acel punct, dar dacă scenariul va funcționa nesupravegheat, asta nu va funcționa. Din fericire, există o alternativă la codificarea hard a parolelor în script. Contraintuitiv, utilizează o parolă diferită pentru a realiza acest lucru, împreună cu o criptare puternică.

În scenariul nostru exemplu, trebuie să facem o conexiune la distanță la un computer Fedora Linux de la computerul nostru Ubuntu. Vom folosi un script de shell Bash pentru a face o conexiune SSH la computerul Fedora. Scriptul trebuie să funcționeze nesupravegheat și nu vrem să punem parola pentru contul de la distanță în script. Nu putem folosi cheile SSH în acest caz, deoarece ne prefacem că nu avem drepturi de control sau de administrare asupra computerului Fedora.

Vom folosi bine-cunoscutul OpenSSL Toolkit să se ocupe de criptare și un utilitar numit sshpass. pentru a alimenta parola în comanda SSH.

LEGATE DE: Cum se creează și instalează cheile SSH din carcasa Linux

Instalarea OpenSSL și SSHPASS

Deoarece o mulțime de alte instrumente de criptare și securitate utilizează openssl, s-ar putea fi deja instalat pe computer. Cu toate acestea, dacă nu este, durează doar un moment de instalat.

Pe Ubuntu, tastați această comandă:

 sudo apt obține openssl 

A instala sshpass. , utilizați această comandă:

 sudo apt instalați sshpass 

Pe Fedora, trebuie să tastați:

 sudo dnf instalare openssl 

Comanda de instalare sshpass. este:

 sudo dnf instalați sshpass 

Pe Manjaro Linux, putem instala OpenSSL cu:

 sudo pacman -sy openssl 

În cele din urmă, pentru a instala sshpass. , utilizați această comandă:

 Sudo Pacman - SSHPASS 

Criptarea pe linia de comandă

Înainte de a intra în utilizarea OpenSSL. Comanda cu scripturi, hai să ne familiarizăm cu ea folosindu-l pe linia de comandă. Să spunem că parola pentru contul de pe computerul la distanță este Rusty! herring.pitshaft . Vom cripta acea parolă folosind OpenSSL. .

Trebuie să furnizăm o parolă de criptare atunci când o facem. Parola de criptare este utilizată în procesele de criptare și decriptare. Există o mulțime de parametri și opțiuni în OpenSSL. comanda. Vom arunca o privire la fiecare dintre ele într-un moment.

 Echo 'Rusty! Herring.pitshaft "| OpenSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -Iter 100000 -Salt-pass-pass: 'pick.your.password' 

Folosim ecou Pentru a trimite parola contului de la distanță printr-o țeavă și în OpenSSL. comanda.

În OpenSSL. Parametrii sunt:

  • ENC -AES-256-CBC : Tipul de codare. Folosim. Standard avansat de criptare Cipătorul cheii cu 25 de biți cu lanț de blocuri de cip.
  • -MD SHA512. : Tipul mesajului digest (hash). Folosim algoritmul criptografic SHA512.
  • -A : Aceasta spune OpenSSL. Pentru a aplica codificarea Base-64 după faza de criptare și înainte de faza de decriptare.
  • -pbkdf2. : Utilizarea funcției de derivare bazată pe parolă 2 (PBKDF2) face mult mai dificilă pentru un atac de forță brute să reușească să ghicească parola. PBKDF2 necesită multe computere pentru a efectua criptarea. Un atacator ar trebui să reproducă toate aceste computere.
  • -Iter 100000. : Setează numărul de calcule pe care PBKDF2 le va utiliza.
  • -sare : Utilizarea unei valori de sare aplicate la întâmplare face ca ieșirea criptată să fie diferită de fiecare dată, chiar dacă textul simplu este același.
  • -Pass Pass: "pick.your.password" : Parola va trebui să utilizăm pentru a decripta parola de la distanță criptată. Substitui pick.your.password. cu o parolă robustă a alegerii dvs.

Versiunea criptată a noastră Rusty! herring.pitshaft Parola este scrisă în fereastra terminalului.

Pentru a decripta acest lucru, trebuie să trecem șir criptat OpenSSL. cu aceiași parametri pe care am folosit-o pentru a cripta, dar adăugând în -D. (decripta).

 ECHO U2FSDGVKX19IIIRNHESG + WM / UKJTZJWNYOPJZPHYRDKYZH5LVZRPIGO1S0GOZU46 | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -Inteir 100000 -Salt-pass-pass: 'pick.your.password' 

Șirul este decriptat, iar textul nostru original - parola pentru contul de utilizator la distanță - este scris în fereastra terminalului.

Asta demonstrează că putem cripta în siguranță parola contului de la distanță. De asemenea, putem decripta atunci când avem nevoie de ea folosind parola pe care am furnizat-o în faza de criptare.

Dar acest lucru se îmbunătățește de fapt situația noastră? Dacă avem nevoie de parola de criptare pentru a decripta parola de cont la distanță, cu siguranță parola de decriptare va trebui să fie în script? Da, da. Dar parola de cont de la distanță criptată va fi stocată într-un fișier diferit, ascuns. Permisiunile din fișier vor împiedica pe oricine, dar dvs. - și utilizatorul rădăcină al sistemului, evident - de la accesarea acestuia.

Pentru a trimite ieșirea de la comanda de criptare la un fișier, putem utiliza redirecționarea. Fișierul este numit ".secret_vault.txt". Am schimbat parola de criptare la ceva mai robust.

 Echo 'Rusty! Herring.pitshaft "| OpenSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -Iter 100000 -Salt-pass-pass: "Secret # Vault! Parola" & GT; .secret_vault.txt 

Nimic vizibil nu se întâmplă, dar parola este criptată și trimisă la fișierul ".secret_vault.txt".

Putem testa faptul că a funcționat prin decriptarea parolei în fișierul ascuns. Rețineți că folosim pisică aici, nu ecou .

 CAT .Secret_vault.txt | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -Iter 100000 -Salt -Pass Pass: "Secret # Vault! Parolă" 

Parola este decriptată cu succes din datele din fișier. Bine utilizare chmod Pentru a modifica permisiunile din acest fișier, astfel încât nimeni altcineva să nu-l poată accesa.

 CHMOD 600 .Secret_vault.txt 
 LS -L .Secret_Vault.txt 

Folosind o mască de permisiuni de 600 elimină toate accesul pentru oricine altul decât proprietarul fișierului. Acum putem trece la scrierea scenariului nostru.

LEGATE DE: Cum să utilizați comanda chmod pe linux

Folosind openssl într-un script

Scriptul nostru este destul de simplu:

 # / bin / bash

# Numele contului de la distanță
La distanță_user = geek.

# parola pentru contul de la distanță
La distanță_passwd = $ (Cat .secret_Vault.txt | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -DBKDF2 -Iter 100000 -Salt -Pass Pass: "Secret # Vault! Parola")

# computer la distanță
Remote_Linux = Fedora-34.Local

# Conectați-vă la computerul la distanță și puneți o marcaj de timp într-un fișier numit script.log
sshpass -p $ la distanță_passwd ssh -t $ la distanță_user @ $ la distanță_linux & lt; _remote_commands.
ECHO $ ​​Utilizator "-" $ (data) & gt; /Home/onmote_user/script.log.
_remote_command 
  • Am stabilit o variabilă numită La distanță_user. la "geek".
  • Apoi am stabilit o variabilă numită Remote_passwd. La valoarea parolei decriptate tras din fișierul ".secret_vault.txt", folosind aceeași comandă pe care am folosit o clipă în urmă.
  • Localizarea calculatorului la distanță este stocată într-o variabilă numită Remote_Linux. .

Cu aceste informații, putem folosi ssh. pentru a vă conecta la computerul la distanță.

  • În sshpass. comanda este prima comandă de pe linia de conectare. O folosim cu -p. (Parolă) Opțiune. Acest lucru ne permite să specificăm parola care ar trebui trimisă la ssh. comanda.
  • Noi folosim -T. (dezactivați alocarea Pseudo-terminal) cu ssh. Pentru că nu trebuie să avem un pseudo-tty ne-a alocat pe computerul la distanță.

Folosim un scurt Aici documentul pentru a trece o comandă la computerul la distanță. Totul între cele două _remote_commands. Corzile sunt trimise ca instrucțiuni la sesiunea de utilizator de pe computerul la distanță - în acest caz, este o singură linie de script de bash.

Comanda trimisă la computerul la distanță pur și simplu conectați numele contului de utilizator și o marcaj de timp unui fișier numit "Script.log".

Copiați și lipiți scriptul într-un editor și salvați-l într-un fișier numit "GO-REMOTE.SH." Nu uitați să modificați detaliile pentru a reflecta adresa propriului computer la distanță, contul de utilizator la distanță și parola de cont de la distanță.

Utilizare chmod pentru a face executabilul scriptului.

 chmod + x go-remote.sh 

Tot ce a mai rămas este să-l încerci. Să ne tragem scenariul.

 ./ go-remote.sh 

Deoarece scriptul nostru este un șablon minimalist pentru un scenariu nesupravegheat, nu există nici o ieșire la terminal. Dar dacă verificăm fișierul "script.log" de pe computerul Fedora, putem vedea că conexiunile la distanță au fost făcute cu succes și că fișierul "script.log" a fost actualizat cu TIMERSAMPS.

 CAT SCRIPT.LOG 

Parola dvs. este privată

Parola de cont de la distanță nu este înregistrată în script.

Și deși parola de decriptare este, În script, nimeni altcineva nu poate accesa fișierul dvs. ".secret_vault.txt" pentru a-l decripta și a prelua parola contului de la distanță.


Linux - Cele mai populare articole

Cum se utilizează "aici documente" în Bash pe Linux

Linux Mar 31, 2025

FatmAwati Achmad Zaenuri / Shutterstock Named ciudat „aici documente“ vă permit să utilizați de intrare / ieșire de redirecționare în interiorul scri..


Ce este nou în Ubuntu 21.04 „hirsutism Hippo“

Linux Apr 22, 2025

Noua versiune nouă a Ubuntu 21.04. , Hirsute Hippo, a fost lansat pe 22 aprilie 2021. Este o versiune intermediară a distribuției populare Linux, cu doar nouă luni de spri..


Ce sunt dicționarii de bash pe Linux și cum le folosiți?

Linux Jun 16, 2025

FatmAwati Achmad Zaenuri / Shutterstock.com Bash Dicționare vă oferă hărți hash și matrice asociative în scripturile Linux Shell. Vă vom arăta cum s..


5 Distribuții Specializate Linux cu caracteristici unice

Linux Jul 20, 2025

Citirea prin intermediul listei de cartoon "de distrouri Linux existente, arome de diverse și lăstarii de pe jos, toate încep să rănească împreună. Pentru a remedia acest lucru, am..


Se pare Linux 30: Cum un hobby proiect Cucerit lume

Linux Sep 17, 2025

Larry Ewing și Gimp Pe 17 septembrie 1991 , Linus Torvalds a lansat pentru prima dată kernel Linux (versiunea 0.01). Iată o scurtă privire la mo..


Ubuntu 21.10 ajunge cu un desktop personalizat GNOME 40

Linux Oct 14, 2025

Ubuntu. Dacă sunteți un utilizator Ubuntu sau cineva care se gândește să încercați, astăzi este o zi bună. Canonic a lansat oficial Ubuntu 21.10 cu un desktop pe..


5 caracteristici Ubuntu Linux pe care ar trebui să le utilizați

Linux Dec 6, 2025

Ubuntu Linux este bogat în caracteristici și vine cu o selecție curată de software preinstalat. Totuși, săpați puțin mai adânc și veți găsi câteva funcții pe care ar trebui să le..


Cum să enumerați serviciile Linux cu SystemCTL

Linux Oct 18, 2025

Computerul dvs. Linux se bazează pe o mulțime de sarcini de fundal numite servicii sau daemons. Pe distribuțiile bazate pe SystemD, aveți comenzi încorporate care vă permit să vedeți ce..


Categorii