Hoe gebruikte versleutelde wachtwoorden in bashscripts

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

Als je gedwongen bent om een ​​Linux-script gebruiken om verbinding te maken met een wachtwoord beveiligde bron, heb je waarschijnlijk een gevoel van onbehagen over het zetten van dat wachtwoord in het script. OpenSSL lost dat probleem voor je.

Wachtwoorden en Scripts

Het is niet een geweldig idee om wachtwoorden in shell scripts te zetten. In feite is het een heel slecht idee. Als het script in de verkeerde handen, kan iedereen die het leest te zien wat het wachtwoord is. Maar als je gedwongen om een ​​script te gebruiken, wat kun je doen?

U kunt het wachtwoord handmatig wanneer het proces bereikt dat punt, maar als het script gaat zonder toezicht uit te voeren, dat zal niet werken in te voeren. Gelukkig is er een alternatief voor het hard coderen van de wachtwoorden in het script. Counterintuitively, het maakt gebruik van een ander wachtwoord om dit te bereiken, samen met enkele sterke encryptie.

In ons voorbeeld scenario, moeten we een externe verbinding met een Fedora Linux computer van onze Ubuntu computer te maken. We zullen met behulp van een Bash shell script om een ​​SSH-verbinding met de Fedora computer te maken. Het script moet laten uitvoeren, en we willen niet om het wachtwoord voor de externe rekening in het script zetten. We kunnen niet SSH-sleutels gebruikt in dit geval, omdat we doen alsof we geen enkele controle of admin rechten heeft op de Fedora computer te hebben.

We gaan naar het gebruik van de bekende te maken OpenSSL-toolkit om de encryptie en een utility genaamd verwerken sshpass om het wachtwoord in te voeren in de SSH commando.

VERWANT: Hoe SSH-toetsen van de Linux Shell te maken en te installeren

Het installeren van OpenSSL en sshpass

Omdat veel van de andere encryptie en security tools te gebruiken OpenSSL, is het misschien al op de computer geïnstalleerd. Echter, als het niet, het duurt maar een moment om te installeren.

Op Ubuntu, typt u deze opdracht:

 sudo apt get openssl 

Installeren sshpass Gebruik deze opdracht:

 sudo apt installeren sshpass 

Op Fedora moet u typen:

 sudo dnf installeren openssl 

De opdracht om te installeren sshpass is:

 sudo dnf installeren sshpass 

Op manjaro linux, kunnen we OpenSSL installeren met:

 sudo pacman -Sy openssl 

Tot slot, te installeren sshpass Gebruik deze opdracht:

 sudo pacman -Sy sshpass 

Het versleutelen op de opdrachtregel

Voordat we naar het gebruik van de openssl commando met scripts, laten we vertrouwd raken met haar door het te gebruiken op de opdrachtregel. Laten we zeggen dat het wachtwoord voor de account op de externe computer Rusty! Herring.PitShaft . We gaan dat wachtwoord te versleutelen met behulp van openssl .

We moeten een encryptie-wachtwoord op te geven als we dat doen. De encryptie wachtwoord wordt gebruikt in de encryptie en decryptie processen. Er zijn een groot aantal parameters en opties in het openssl opdracht. We zullen een kijkje nemen op elk van hen in een moment te nemen.

 Echo 'Rusty! Hirring.PitShaft' | openssl enc -aes-256-CBC -md sha512 -a -pbkdf2 -iter 100000 -zout-pass door: 'pick.your.password' 

Wij gebruiken echo het wachtwoord extern account verzenden via een leiding en in de openssl opdracht.

De openssl parameters zijn:

  • ENC -aes-256-CBC : Het coderingstype. We gebruiken de Advanced Encryption Standard 256 bits cipher met cipher-block chaining.
  • -MD sha512 De berichtsamenvatting (hash) type. We gebruiken de SHA512 cryptografisch algoritme.
  • -een : Dit vertelt openssl om base-64 codering toepassing na de codering fase en voor de decodering fase.
  • -pbkdf2 : Met behulp van Password-Based Key Afleiding Functie 2 (PBKDF2) maakt het veel moeilijker voor een brute force attack om te slagen in raden uw wachtwoord. PBKDF2 vereist vele berekeningen om de encryptie te voeren. Een aanvaller zou moeten al die berekeningen te repliceren.
  • -iter 100000 : Stelt het aantal berekeningen die PBKDF2 gebruiken.
  • -zout : Gebruik van een willekeurig toegepaste zoutwaarde maakt de gecodeerde uitgang elke keer anders, zelfs als de gewone tekst hetzelfde is.
  • -Pass: 'pick.your.password' : Het wachtwoord dat we moeten gebruiken om het gecodeerde wachtwoord-wachtwoord te decoderen. Vervanging pick.your.password met een robuust wachtwoord van uw keuze.

De gecodeerde versie van onze Rusty! Herring.PitShaft Wachtwoord is naar het terminalvenster geschreven.

Om dit te decoderen, moeten we die versleutelde string doorgeven openssl met dezelfde parameters die we gebruikten om te coderen, maar het toevoegen van de -NS (decoderen) optie.

 ECHO U2FSDGVKX19IIIRNESG + WM / UKJTZJWNOPJZPHYRDKYZH5LVZRPIGO1S0GOZU46 | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -TER-DEPBKDF2-ITEER 100000 -SALT-PASSEN: 'Pick.your.Password' 

De tekenreeks wordt gedecodeerd en onze oorspronkelijke tekst - het wachtwoord voor de remote gebruikersaccount - is geschreven naar het aansluitingsvenster.

Dat bewijst dat we ons wachtwoord op afstand gebruikersaccount veilig kunnen coderen. We kunnen het ook decoderen wanneer we het nodig hebben met behulp van het wachtwoord dat we in de coderingsfase hebben verstrekt.

Maar verbetert dit onze situatie eigenlijk? Als we het versleutingswachtwoord nodig hebben om het wachtwoord van de externe account te decoderen, moet het decoderingswachtwoord zeker in het script zijn? Nou ja, het doet het. Maar het versleutelde wachtwoord van de gebruikersaccount wordt in een ander, verborgen bestand opgeslagen. De machtigingen op het bestand zullen iemand behalve u - en de root-gebruiker van het systeem voorkomen, natuurlijk - van het toegang krijgen.

Om de uitvoer van de coderingsopdracht naar een bestand te verzenden, kunnen we omleiding gebruiken. Het bestand heet ".secret_vault.txt." We hebben het versleutingswachtwoord veranderd voor iets robuuster.

 Echo 'Rusty! Hirring.PitShaft' | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -RITER 100000 -SALT-PASSEN: 'SECRET # Vault! Wachtwoord' & GT; .Secret_vault.txt 

Niets zichtbaar gebeurt, maar het wachtwoord is gecodeerd en verzonden naar het bestand ".Secret_vault.txt".

We kunnen testen dat het werkte door het wachtwoord in het verborgen bestand te decoderen. Merk op dat we gebruiken kat hier niet echo .

 Cat .Secret_vault.txt | OPERSSL ENC -AES-256-CBC-MD SHA512 -A -D -PBKDF2 -DRITER 100000 -SALT-PASSEN: 'Secret # Vault! Wachtwoord' 

Het wachtwoord is succesvol gedecodeerd uit de gegevens in het bestand. We zullen gebruik maken van chmod Om de machtigingen op dit bestand te wijzigen, zodat niemand anders toegang heeft.

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

Met behulp van een machtigingsmasker van 600 verwijdert alle toegang voor iemand anders dan de eigenaar van het bestand. We kunnen nu verder gaan met het schrijven van ons script.

VERWANT: Hoe de CHMOD-opdracht op Linux te gebruiken

Met OpenSSL in een script

Ons script is vrij eenvoudig:

 #! / Bin / bash

# Naam van het externe account
Remote_User = Geek

# wachtwoord voor het externe account
Remote_Passwd = $ (Cat .secret_vault.txt | OpensSL ENC -AES-256-CBC-MD SHA512 -A -D -PBKDF2 -A -Altype 100000 -Salt-Pass Pass: 'Secret # Vault! Wachtwoord')

# computer op afstand
Remote_Linux = Fedora-34.Local

# Maak verbinding met de externe computer en plaats een tijdstempel in een bestand met de naam script.log
Sshpass -P $ Remote_Passwd Ssh -t $ Remote_User @ $ Remote_Linux & LT; & LT; _Remote_commands
ECHO $ ​​User "-" $ (DATUM) & GT; & GT; /home/$Remote_user/script.log
_Remote_commands 
  • We stellen een variabele genoemd Remote_user naar "geek."
  • We zetten vervolgens een variabele in de naam Remote_passwd Tot de waarde van het gedecodeerde wachtwoord getrokken uit het bestand ".Secret_vault.txt", met behulp van hetzelfde commando dat we een moment geleden hebben gebruikt.
  • De locatie van de externe computer wordt opgeslagen in een variabele genaamd Remote_Linux .

Met die informatie kunnen we de ssh opdracht om verbinding te maken met de externe computer.

  • De sshpass opdracht is het eerste opdracht op de verbindingslijn. We gebruiken het met de -P (wachtwoord) optie. Hiermee kunt u het wachtwoord opgeven dat naar de ssh opdracht.
  • Wij gebruiken de -T (Schakel de optie Pseudo-terminal toewijzing uit) ssh Omdat we geen pseudo-tty hebben toegewezen aan ons op de externe computer.

We gebruiken een korte hier document om een ​​opdracht aan de externe computer door te geven. Alles tussen de twee _Remote_commands Strings wordt verzonden als instructies voor de gebruikerssessie op de externe computer-in dit geval, het is een enkele lijn van Bash-script.

Het opdracht dat naar de externe computer is verzonden, logt u eenvoudig de naam van de gebruikersaccount en een tijdstempel in op een bestand met de naam "Script.log."

Kopieer en plak het script in een editor en sla deze op in een bestand met de naam "Go-Remote.SH." Vergeet niet om de details te wijzigen om het adres van uw eigen externe computer, extern gebruikersaccount en wachtwoord-wachtwoord weer te geven.

Gebruik maken van chmod om het uitvoerbare bestand te maken.

 Chmod + x Go-Remote.SH 

Alles wat overblijft is om het uit te proberen. Laten we ons script opvatten.

 ./ Go-Remote.SH 

Omdat ons script een minimalistisch sjabloon is voor een onbewaakt script, is er geen uitvoer aan de terminal. Maar als we het bestand "Script.log" op de Fedora-computer controleren, kunnen we zien dat externe verbindingen met succes zijn gemaakt en dat het bestand "Script.log" is bijgewerkt met tijdstempels.

 CAT-script.log 

Uw wachtwoord is privé

Uw Remote Account-wachtwoord wordt niet opgenomen in het script.

En hoewel het decoderingswachtwoord is, In het script heeft niemand anders toegang tot uw bestand ".Secret_vault.txt" om het te decoderen en het wachtwoord van de afstandsbediening op te halen.


Linux - Meest populaire artikelen

DB-browser gebruiken voor SQLite op Linux

Linux Dec 16, 2024

Fatmawati achmad zaenuri / shutterstock DB Browser voor SQLite kunt u bekijken en bewerken SQLite databases op Linux. U kunt ontwerpen, maken en bewer..


Het beste Linux distributies Zonder systemd

Linux Feb 24, 2025

Bmj / shutterstock.com Wanneer de dominante Linux-distributies zijn goedgekeurd systeem , Overschrijdt gevorkte distributies en startte nieuwe proje..


Hoe maak je een bestand regel

Linux Feb 3, 2025

Fatmawati achmad zaenuri / shutterstock Het is vrij eenvoudig om de inhoud van een Linux tekstbestand gelezen regel voor regel in een shell script, zolang je..


Hoe te gebruiken Restricted Shell te beperken wat een Linux gebruiker kan doen

Linux Mar 25, 2025

Fatmawati achmad zaenuri / shutterstock Een beperkte shell beperkt wat een gebruikersaccount kan doen op Linux. Een beperkte gebruiker kan hun map niet wijzi..


De inheemse Gaming op Linux zijn te sterven, en dat is goed

Linux Sep 27, 2025

DC Studio / Shutterstock.com De Stoomdek , aangekondigd in augustus 2021, heeft Linux Gaming Circles over de toekomst van gamen op Linux. Het dek, d..


Dit New Linux Gaming Laptop Heeft de Specs Run Anything

Linux Oct 20, 2025

JUNO COMPUTERS Linux en gaming beginnen de laatste tijd veel meer samen te komen. De Stoomdek Is onderweg met Linux geïnstalleerd en Juno heeft net aangekon..


Hoe u een gebruiker toevoegt aan het sudoersbestand in Linux

Linux Oct 30, 2025

Als een sudo Opdracht op Linux brengt u een bericht dat een gebruiker "niet in het sudoersbestand staat", u moet op de lijst "Sudoers" komen. We lopen door het toevoegen van een gebr..


5 Ubuntu Linux -functies die u zou moeten gebruiken

Linux Dec 6, 2024

Ubuntu Linux is functie rijk en wordt geleverd met een samengestelde selectie vooraf geïnstalleerde software. Graaf echter een beetje dieper en je zult enkele functies vinden die je zou moeten..


Categorieën