Sådan bruges krypterede adgangskoder i bash scripts

Jun 30, 2025
Linux
fatmawati achmad zaenuri / shutterstock.com

Hvis du er tvunget til at bruge et Linux-script til at oprette forbindelse til en adgangskodebeskyttet ressource, føler du dig sandsynligvis urolig for at sætte adgangskoden i scriptet. OpenSSL løser det problem for dig.

Adgangskoder og scripts.

Det er ikke en god ide at sætte adgangskoder i shell scripts. Faktisk er det en virkelig dårlig ide. Hvis scriptet falder ind i de forkerte hænder, kan alle, der læser det, se, hvad adgangskoden er. Men hvis du er tvunget til at bruge et script, hvad mere kan du gøre?

Du kan indtaste adgangskoden manuelt, når processen når det punkt, men hvis scriptet skal løbe uden opsyn, vil det ikke fungere. Heldigvis er der et alternativ til hard-kodning af adgangskoderne i scriptet. Modknyttet bruger det en anden adgangskode til at opnå dette sammen med en stærk kryptering.

I vores eksempel scenario skal vi lave en fjernforbindelse til en Fedora Linux-computer fra vores Ubuntu-computer. Vi bruger et bash shell script til at lave en SSH-forbindelse til Fedora-computeren. Scriptet skal køre uden opsyn, og vi vil ikke sætte adgangskoden til den eksterne konto i scriptet. Vi kan ikke bruge SSH-nøgler i dette tilfælde, fordi vi foregiver, at vi ikke har nogen kontrol- eller adminrettigheder over Fedora-computeren.

Vi skal gøre brug af den velkendte OpenSSL Toolkit. At håndtere kryptering og et værktøj kaldet sshpass. at fodre adgangskoden til kommandoen SSH.

RELATEREDE: Sådan oprettes og installerer SSH-nøgler fra Linux Shell

Installation af OpenSSL og SSHPass

Fordi en masse andre krypterings- og sikkerhedsværktøjer bruger OpenSSL, kan det allerede være installeret på din computer. Men hvis det ikke er, tager det kun et øjeblik at installere.

På Ubuntu skal du skrive denne kommando:

 SUDO APT GET OPENSSL 

At installere sshpass. , brug denne kommando:

 sudo apt installer sshpass 

På Fedora skal du skrive:

 sudo DNF installer OpenSSL 

Kommandoen til at installere sshpass. er:

 sudo dnf installer sshpass 

På Manjaro Linux kan vi installere OpenSSL med:

 Sudo Pacman -SY OPENSSL 

Endelig at installere sshpass. , brug denne kommando:

 sudo pacman-system sshpass 

Krypter på kommandolinjen

Før vi kommer ind i at bruge OpenSSL. Kommando med scripts, lad os blive bekendt med det ved at bruge det på kommandolinjen. Lad os sige, at adgangskoden til kontoen på fjerncomputeren er Rusty! Herring.PitShaft. . Vi skal kryptere det pågældende kodeord ved hjælp af OpenSSL. .

Vi skal levere en krypteringsadgangskode, når vi gør det. Krypteringsadgangskoden bruges i krypterings- og dekrypteringsprocesserne. Der er mange parametre og muligheder i OpenSSL. kommando. Vi tager et kig på hvert af dem i et øjeblik.

 ECHO 'Rusty! Herring.PitShaft' | OpenSSL Enc -aes-256-CBC -MD SHA512 -A -PBKDF2 -ER 100000 -Salt-pass-pass: 'Pick.your.Password' 

Vi bruger ekko At sende den eksterne kontoadgangskode gennem et rør og ind i OpenSSL. kommando.

Det OpenSSL. Parametre er:

  • Enc -aes-256-CBC : Kodningstypen. Vi bruger Avanceret kryptering Standard 256-bit nøglecipher med cipher-blokkæde.
  • -MD SHA512. : Message Digest (Hash) type. Vi bruger Sha512 kryptografisk algoritme.
  • -en : Dette fortæller OpenSSL. at anvende base-64 kodning efter krypteringsfasen og før dekrypteringsfasen.
  • -pBKDF2. : Brug af adgangskodebaseret nøgleafledningsfunktion 2 (PBKDF2) gør det meget vanskeligere for et brutal Force-angreb at lykkes i at gætte dit kodeord. PBKDF2 kræver, at mange beregninger udfører kryptering. En angriber ville skulle replikere alle disse beregninger.
  • -Der 100000. : Indstiller antallet af beregninger, som PBKDF2 vil bruge.
  • -salt : Ved hjælp af en tilfældigt påført saltværdi gør den krypterede udgang forskellig hver gang, selvom den almindelige tekst er den samme.
  • -pass Pass: 'Pick.your.Password' : Adgangskoden skal vi bruge til at dekryptere den krypterede fjernadgangskode. Erstatning Pick.your.password. med et robust adgangskode til din valg.

Den krypterede version af vores Rusty! Herring.PitShaft. Adgangskoden er skrevet til terminalvinduet.

For at dekryptere dette skal vi passere den krypterede streng i OpenSSL. med de samme parametre, som vi plejede at kryptere, men tilføjer i -d. (dekryptere) mulighed.

 ECHO U2FSDGVKX19IIIRNESG + WM / UKJTZJWNYOPJZPHYRDKYZH5LVZRPIGO1S0GOZU46 | OPENSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ER 100000 -Salt-pass-pass: 'Pick.your.Password' 

Strengen er dekrypteret, og vores originale tekst-adgangskoden til den eksterne brugerkonto-er skrevet til terminalvinduet.

Det viser, at vi sikkert kan kryptere vores fjerntliggende brugerkontoadgangskode. Vi kan også dekryptere det, når vi har brug for det ved hjælp af det kodeord, vi leverede i krypteringsfasen.

Men forbedrer dette faktisk vores situation? Hvis vi har brug for krypteringsadgangskoden til at dekryptere fjernkontoadgangskoden, skal Dekrypteringsadgangskoden sikkert være i scriptet? Nå, ja det gør det. Men den krypterede fjerntliggende brugerkontoadgangskode gemmes i en anden, skjult fil. Tilladelserne på filen forhindrer nogen, men du-og systemets rodbruger, selvfølgelig - at få adgang til det.

For at sende udgangen fra krypteringskommandoen til en fil, kan vi bruge omdirigering. Filen hedder ".secret_vault.txt." Vi har ændret krypteringsadgangskoden til noget mere robust.

 ECHO 'Rusty! Herring.PitShaft' | OPENSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -ER 100000 -SAlt-pass-pass: 'Secret # Vault! Adgangskode' & GT; .secret_vault.txt 

Intet synligt sker, men adgangskoden er krypteret og sendt til filen ".secret_vault.txt".

Vi kan teste, at det fungerede ved at dekryptere adgangskoden i den skjulte fil. Bemærk, at vi bruger kat her, ikke. ekko .

 CAT .SECRET_VAULT.TXT | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ER 100000 -Salt-pass-pass: 'Secret # Vault! Adgangskode' 

Adgangskoden dekrypteres med succes fra dataene i filen. Godt brug chmod. For at ændre tilladelserne på denne fil, så ingen andre kan få adgang til det.

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

Brug af en tilladelsesmaske på 600 fjerner al adgang for andre end filen. Vi kan nu gå videre til at skrive vores script.

RELATEREDE: Sådan bruges CHMOD-kommandoen på Linux

Ved hjælp af OpenSSL i et script

Vores script er ret ligetil:

 #! / Bin / bash

# Navn på den eksterne konto
REMOTE_USER = GEEK

# Adgangskode til den eksterne konto
REMOTE_PASSWD = $ (CAT .SECRET_VAULT.TXT | OPENSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ER 100000 -Salt-Pass Pass: 'Secret # Vault! Adgangskode')

# fjern computer
REMOTE_LINUX = FEDORA-34.LOCAL

# Tilslut til den eksterne computer og læg en tidsstempel i en fil kaldet script.log
sshpass -P $ remote_passwd ssh-$ remote_user @ $ remote_linux & lt; & lt; _remote_commands.
ekko $ bruger "-" $ (dato) & gt; & gt; /home/$remote_user/script.log.
_remote_commands 
  • Vi sætter en variabel kaldet REMOTE_USER. til "geek."
  • Vi sætter derefter en variabel kaldet REMOTE_PASSWD. til værdien af ​​den dekrypterede adgangskode trukket fra filen ".secret_vault.txt", ved hjælp af den samme kommando, som vi brugte et øjeblik siden.
  • Placeringen af ​​den eksterne computer er gemt i en variabel kaldet REMOTE_LINUX. .

Med disse oplysninger kan vi bruge ssh. kommando for at oprette forbindelse til fjerncomputeren.

  • Det sshpass. Kommando er den første kommando på forbindelseslinjen. Vi bruger det med -P. (adgangskode) mulighed. Dette gør det muligt for os at angive det kodeord, der skal sendes til ssh. kommando.
  • Vi bruger -T. (Deaktiver Pseudo-terminal tildeling) Mulighed med ssh. Fordi vi ikke behøver at have en pseudo-tty tildelt til os på den eksterne computer.

Vi bruger en kort her Dokument. at bestå en kommando til den eksterne computer. Alt mellem de to _remote_commands. Strenge sendes som instruktioner til brugersessionen på den eksterne computer - i dette tilfælde er det en enkelt linje af bash script.

Kommandoen sendt til fjerncomputeren logger blot på brugerkontonnavnet og en tidsstempel til en fil kaldet "Script.log."

Kopier og indsæt scriptet til en editor og gem det til en fil kaldet "go-remote.sh." Husk at ændre detaljerne for at afspejle adressen på din egen fjernbetjening, fjernbrugerkonto og ekstern kontoadgangskode.

Brug chmod. at gøre scriptet eksekverbar.

 chmod + x go-remote.sh 

Alt, hvad der er tilbage, er at prøve det ud. Lad os slukke vores script.

 ./ GO-REMOTE.SH 

Fordi vores script er en minimalistisk skabelon til et uovervåget script, er der ingen udgang til terminalen. Men hvis vi kontrollerer "script.log" -filen på Fedora-computeren, kan vi se, at fjernforbindelser er blevet foretaget, og at filen "Script.log" er blevet opdateret med tidsstempler.

 Cat Script.Log 

Dit kodeord er privat

Din fjerntliggende kontoadgangskode ikke optages i scriptet.

Og selvom dekrypteringsadgangskoden er, I scriptet kan ingen andre få adgang til din ".secret_vault.txt" -fil for at dekryptere den og hente den eksterne kontoadgangskode.


Linux - Mest populære artikler

Sådan gendannes slettede filer på Linux med TestDisk

Linux Nov 18, 2025

FATMAWATI ACHMAD ZAENURI / SHUTTERSTOCK Har du nogensinde slettet en fil og straks beklagede det? Du har brug for det tilbage, og hurtigt! Men hvad hvis filen ..


Hvad er bash ordbøger på Linux, og hvordan bruger du dem?

Linux Jun 16, 2025

fatmawati achmad zaenuri / shutterstock.com Bash Dictionaries giver dig hash kort og associative arrays i Linux Shell scripts. Vi viser dig, hvordan du bruge..


Sådan opdateres Arch Linux

Linux Jul 30, 2025

Ubuntu Project. Har tiden komme til at opdatere dit arch Linux-system? Uanset om du er på ren bue eller en buebaseret distro som Manjaro. Og Garu..


De 6 bedste lette Linux Distos

Linux Jul 27, 2025

3DMI / Shutterstock.com. Hvis din Windows eller Mac-computer er gammel og kæmper for at holde op, kan installation af Linux give den en frisk leasing af livet..


Hvad er "rod" på Linux?

Linux Jul 7, 2025

fatmawati achmad zaenuri / shutterstock.com Rødbrugeren er den mest magtfulde enhed i Linux-universet med ubegrænsede magter, for bedre eller værre. Opret..


Hvad er pop! _OS?

Linux Oct 20, 2025

Hvis du har hørt om Pop! _OS. , du har måske set folk, der ofte henviser til det som det bedste Windows-alternativ eller den ideelle Linux-distribution for Gaming. Her er hv..


Sådan Turn Off en Ubuntu PC

Linux Oct 12, 2025

Ligesom alle personlige computere, en pc kører Ubuntu. Desktop operativsystemet skal være slukket nu og derefter. Lukning af Ubuntu er let, og du har flere metoder til din rå..


Sådan indstilles en statisk IP -adresse i Ubuntu

Linux Oct 17, 2025

Dit hjemmenetværk er afhængig af IP -adresser til rutedata mellem enheder, og nogle gange kan tilslutning af netværket en enheds adresse ændres. Sådan giver du en Ubuntu Linux -computer en..


Kategorier