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, 2024

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 ..


Sådan bruges Begrænset Shell til at begrænse, hvad en Linux-bruger kan gøre

Linux Mar 25, 2025

FATMAWATI ACHMAD ZAENURI / SHUTTERSTOCK En begrænset shell begrænser, hvad en brugerkonto kan gøre på Linux. En begrænset bruger kan ikke ændre deres m..


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 nyt i Debian 11 "Bullseye"

Linux Jul 22, 2025

Debian. , progenitoren for mange andre Linux-distributioner har gjort frigivelse 11 tilgængelig i testfasen. Vejer du dyderne til opgradering, eller er du bare nysgerrig efter ..


Sådan bruges FSCK-kommandoen på Linux

Linux Aug 18, 2025

Pixza Studio / Shutterstock Alle vores vigtige data sidder i et filsystem af en type eller en anden, og filsystemproblemer er bundet til at ske. På Linux kan ..


Linux bliver 30: Hvordan et hobbyprojekt erobrede verden

Linux Sep 17, 2025

Larry ewing og gimp På 17. september 1991 , Linus Torvalds frigivet Linux Kernel (version 0.01) for første gang. Her er et kort kig på, hvordan e..


Sådan finder du pid for en Linux -proces med pidof eller pgrep

Linux Nov 15, 2024

At arbejde med en Linux -proces betyder ofte at kende dets proces -ID eller PID. Det er et unikt nummer, der gives til hvert stykke kørende software. Her er to måder at finde ud af, hvad det ..


Sådan angiver Linux -tjenester med SystemCtl

Linux Oct 18, 2025

Din Linux -computer er afhængig af en masse baggrundsopgaver kaldet tjenester eller dæmoner. På SystemD-baserede distributioner har du indbyggede kommandoer, der lader dig se, hvilke tjenest..


Kategorier