Hur man använder krypterade lösenord i Bash skript

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

Om du är tvungen att använda en Linux-skript för att ansluta till en lösenordsskyddad resurs, du förmodligen känner obehag om att sätta det lösenordet i skriptet. OpenSSL löser det problem för dig.

Lösenord och skript

Det är inte en bra idé att sätta lösenord i skalskript. I själva verket är det en riktigt dålig idé. Om skriptet hamnar i orätta händer, kan alla som läser det se vad lösenordet är. Men om du är tvungen att använda ett manus, vad kan man göra?

Du kan ange lösenordet manuellt när processen når den punkten, men om manuset kommer att köra obevakad, som inte kommer att fungera. Lyckligtvis finns det ett alternativ till hårdkoda lösenorden i skriptet. Counterintuitively använder den ett annat lösenord för att uppnå detta, tillsammans med några starka kryptering.

I vårt exempel scenario måste vi göra en fjärranslutning till en Fedora Linux-dator från vår Ubuntu dator. Vi kommer att använda en Bash script för att göra en SSH anslutning till Fedora dator. Skriptet måste köra obevakad, och vi vill inte sätta lösenordet för fjärrkonto i skriptet. Vi kan inte använda SSH-nycklar i det här fallet, eftersom vi låtsas att vi inte har någon kontroll eller admin rättigheter över Fedora dator.

Vi kommer att använda sig av den välkända OpenSSL Toolkit att hantera kryptering och ett verktyg som heter sist att mata in lösenordet i kommando SSH.

RELATERAD: Så här skapar du och installerar SSH-nycklar från Linux-skalet

Installera OpenSSL och sshpass

Eftersom en hel del andra krypterings- och säkerhetsverktyg använder OpenSSL, kan det redan vara installerat på din dator. Men om det inte är, det tar bara ett ögonblick att installera.

På Ubuntu, skriver detta kommando:

 sudo apt get openssl 

Att installera sist Använd detta kommando:

 sudo apt installera sshpass 

På Fedora måste du skriva:

 sudo DNF installera openssl 

Kommandot för att installera sist är:

 sudo DNF installera sshpass 

På Manjaro Linux, kan vi installera OpenSSL med:

 sudo pacman -Sy openssl 

Slutligen, för att installera sist Använd detta kommando:

 sudo pacman -Sy sshpass 

Kryptera på kommandoraden

Innan vi går in med hjälp av openssl kommando med manus, låt oss bekanta sig med det genom att använda den på kommandoraden. Låt oss säga att lösenordet för kontot på fjärrdatorn är rostig! sill.pitshaft . Vi kommer att kryptera att lösenordet med openssl .

Vi måste ge ett krypterings lösenord när vi gör. Krypterings lösenord används i kryptering och dekryptering processer. Det finns en hel del parametrar och optioner i openssl kommando. Vi tar en titt på var och en av dem i ett ögonblick.

 Echo 'Rusty! Herring.Pitshaft' | openssl enc -aes-256-cbc -MD sha512 -a -pbkdf2 -iter 100 tusen -salt -pass pass: 'pick.your.password' 

Vi använder eko att skicka fjärrkonto lösenord genom ett rör och in i openssl kommando.

De openssl parametrar är:

  • enc -aes-256-cbc : Typ kodning. Vi använder Avancerad krypterings standard 256-bitars nyckel chiffer med chiffer-Block Chaining.
  • -MD sha512 : Meddelandet digest (hash) typ. Vi använder SHA512 krypteringsalgoritm.
  • -a : Detta visar openssl att applicera base-64-kodning efter krypteringsfasen och före dekryptering fasen.
  • -pbkdf2 : Använda lösenordsbaserade Key Härledning Funktion 2 (PBKDF2) gör det mycket svårare för en brute force-attack för att lyckas i gissa lösenord. PBKDF2 kräver många beräkningar för att utföra krypteringen. En angripare skulle behöva replikera alla dessa beräkningar.
  • -iter 100 tusen : Ställer in antalet beräkningar som PBKDF2 kommer att använda.
  • -salt : Att använda ett slumpmässigt applicerat saltvärde gör den krypterade utgången annorlunda varje gång, även om den vanliga texten är densamma.
  • -Pass Pass: "pick.your.password" : Lösenordet vi behöver använda för att dekryptera det krypterade fjärrlösenordet. Ersättning pick.your.password med ett robust lösenord för ditt val.

Den krypterade versionen av vår rostig! sill.pitshaft Lösenordet är skrivet till terminalfönstret.

För att dekryptera detta måste vi passera den krypterade strängen till openssl med samma parametrar som vi brukade kryptera, men lägga till i -d (dekryptera) alternativet.

 ECHO U2FSDGVKX19IIIRNHESG + WM / UKJTZJWNYOPJZPHYRDYKYZH5LVZRPIGO1S0GOZU46 | OPENSSL ENC-SE-256-CBC-MD SHA512 -A -D -PBKDF2 -ITER 100000 -SALT-PASS PASS: "PICK.YOUR.PASSWORD" 

Strängen är dekrypterad, och vår ursprungliga text - lösenordet för fjärrkontoten är skrivet till terminalfönstret.

Det visar sig att vi säkert kan kryptera vårt lösenord för fjärrkontot. Vi kan också dekryptera det när vi behöver det med det lösenord som vi tillhandahållit i krypteringsfasen.

Men förbättrar detta faktiskt vår situation? Om vi ​​behöver krypteringslösenordet för att dekryptera lösenordet för fjärrkontot, måste säkert dekrypteringslösenordet vara i skriptet? Jo, det gör det. Men det krypterade fjärrkontotens lösenord kommer att lagras i en annan dold fil. Tillstånd på filen kommer att förhindra någon, men du - och systemets root-användare, självklart - från att komma åt den.

För att skicka utmatningen från krypteringskommandot till en fil kan vi använda omdirigering. Filen heter ".Secret_vault.txt." Vi har ändrat krypteringslösenordet till något mer robust.

 Echo 'Rusty! Herring.Pitshaft' | OPENSSL ENC-SE-256-CBC-MD SHA512 -A -PBKDF2 -ITER 100000 -SALT-Pass Pass: 'Secret # Vault! Lösenord' & GT; .Secret_vault.txt 

Inget synligt händer, men lösenordet är krypterat och skickat till filen ".Secret_vault.txt".

Vi kan testa att det fungerade genom att dekryptera lösenordet i den dolda filen. Observera att vi använder katt här, inte eko .

 Cat .Secret_vault.txt | OPENSSL ENC-SE-256-CBC-MD SHA512 -A -D -PBKDF2 -ITER 100000 -SALT-PASS PASS: 'Secret # Vault! Lösenord' 

Lösenordet är framgångsrikt dekrypterat från data i filen. Väl använda sig av chmod För att ändra behörigheterna på den här filen så att ingen annan kan komma åt den.

 chmod 600 .Secret_vault.txt 
 ls -l .Secret_vault.txt 

Använda en behörighetsmask på 600 tar bort all åtkomst för någon annan än filägaren. Vi kan nu gå vidare för att skriva vårt skript.

RELATERAD: Så här använder du CHMOD-kommandot på Linux

Använda OPENSSL i ett skript

Vårt skript är ganska enkelt:

 #! / Bin / bash

# namn på fjärrkontot
Remote_User = Geek

# Lösenord för fjärrkontot
REMOTE_PASSWD = $ (CAT .SECRET_VAULT.TXT | OPENSSL ENC -AES-256-CBC-MD SHA512 -A -D -PBKDF2 -iter 100000 -SALT-Pass Pass: 'Secret # Vault! Lösenord')

# fjärrdator
REMOTE_LINUX = FEDORA-34.LOCAL

# Anslut till fjärrdatorn och sätt en tidstämpel i en fil som heter 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 
  • Vi sätter en variabel som heter REMOTE_USER till "geek".
  • Vi ställer sedan en variabel som heter REMOTE_PASSWD Till värdet av det dekrypterade lösenordet drogs från filen ".Secret_vault.txt", med samma kommando som vi använde för en stund sedan.
  • Platsen för fjärrdatorn lagras i en variabel som heter REMOTE_LINUX .

Med den informationen kan vi använda ssh kommandot att ansluta till fjärrdatorn.

  • De sist kommandot är det första kommandot på anslutningslinjen. Vi använder det med -p (Lösenord) Alternativ. Detta låter oss ange lösenordet som ska skickas till ssh kommando.
  • Vi använder -T (Inaktivera pseudo-terminal tilldelning) alternativ med ssh Eftersom vi inte behöver ha en pseudo-tty allokerad till oss på fjärrdatorn.

Vi använder en kort här dokument att skicka ett kommando till fjärrdatorn. Allt mellan de två _remote_commands Strängar skickas som instruktioner till användarsessionen på fjärrdatorn - i det här fallet är det en enda rad av bash-skript.

Kommandot som skickas till fjärrdatorn loggar helt enkelt användarkontonamnet och en tidsstämpel till en fil som heter "Script.log."

Kopiera och klistra in skriptet i en redaktör och spara den till en fil som heter "go-remote.sh." Kom ihåg att ändra detaljerna för att återspegla adressen till din egen fjärrdator, fjärrkonto och lösenord för fjärrkontot.

Använda sig av chmod för att göra skriptet körbart.

 Chmod + x go-remote.sh 

Allt som är kvar är att prova det. Låt oss skjuta upp vårt skript.

 ./ go-remote.sh 

Eftersom vårt skript är en minimalistisk mall för ett obevakat skript, finns det ingen utgång till terminalen. Men om vi kontrollerar filen "script.log" på Fedora-datorn kan vi se att fjärranslutningar har gjorts och att filen "script.log" har uppdaterats med tidsstämplar.

 Cat Script.log 

Ditt lösenord är privat

Ditt fjärrkonto lösenord spelas inte in i skriptet.

Och även om dekrypteringslösenordet är, I skriptet kan ingen annan komma åt din ".Secret_vault.txt" -fil för att dekryptera det och hämta fjärrkontotens lösenord.


Linux - Mest populära artiklar

The Best Linux-distributioner Utan SYSTEMD

Linux Feb 24, 2025

Bmj / shutterstock.com När de dominerande Linux-distributionerna antogs systemd , Dissenters forked distributioner och startade nya projekt. Så va..


Hur man använder Brace Expansion i Linux Bash Shell

Linux May 12, 2025

Fatmawati Achmad Zaenuri / Shutterstock Brace expansion är en användbar teknik för att generera listor med strängar som kan användas i skript och alias oc..


Vad är nytt i Debian 11 ”Bullseye”

Linux Jul 22, 2025

Debian , Frogenor av många andra Linux-distributioner, har gjort frisättning 11 tillgänglig i testfasen. Väger du uppgraderna att uppgradera, eller är du bara nyfiken på f..


De bäst Linux bärbara för 2021 för utvecklare och Entusiaster

Linux Sep 27, 2025

Tomeqs / Shutterstock.com Vad ska man leta efter i en Linux-bärbar dator i 2021 Du kan köpa nästan en bärbar dator och Installera Linux p..


10 Grundläggande Linux Kommandon för nybörjare

Linux Oct 13, 2025

Bara komma igång på Linux? Att göra dig bekväm med kommandoraden är viktigt. Om du redan är bekant med Command Line Utilities, hittar du att Linux och Mac delar mycket gemensamt, men..


kan du installera Linux på en M1 Apple Silicon Mac?

Linux Nov 12, 2024

Inte alla köper en Mac till enbart köra MacOS. Den dåliga nyheten är att från och med november 2021 är infödd Linux stöd på Apple Silicon ännu inte möjligt. Framsteg görs doc..


5 Ubuntu Linux -funktioner du bör använda

Linux Dec 6, 2024

Ubuntu Linux är funktionsrikt och levereras med ett kuraterat urval av förinstallerad programvara. Gräva bara lite djupare, så hittar du några funktioner du borde använda. Ubunt..


10 användbara exempel på Linux RSYNC -kommandot

Linux Oct 24, 2025

Linux rsync Kommando är ett kraftfullt filkopierings- och mappsynkroniseringsverktyg. Här är tio vanliga användningsfall som du kommer att kunna utnyttja dina egna system. ..


Kategorier