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

Hur man återställa raderade filer på Linux med Testdisk

Linux Nov 18, 2025

Fatmawati Achmad Zaenuri / Shutterstock Har du någonsin raderat en fil och omedelbart beklagade det? Du behöver det tillbaka och snabbt! Men vad händer om f..


Hur hanterar Linux-servrar med cockpit-webbgränssnittet

Linux Dec 9, 2025

Fatmawati Achmad Zaenuri / Shutterstock Du kan enkelt övervaka och hantera flera Linux-datorer med cockpit, ett webbläsarbaserat administration och dashboard..


Hur man installerar Signal Desktop på Linux

Linux Jan 22, 2026

Eliseu Geisler / Shutterstock.com Signal är integritet-fokuserade smartphone messaging app alla verkar använda . Du kan också använda..


Hur man använder ”här Documents” i Bash på Linux

Linux Mar 31, 2025

Fatmawati Achmad Zaenuri / Shutterstock Den konstigt namngivna "här dokument" låter dig använda inmatning / ut omdirigering inuti bash-skript på Linux. De ..


Vad är nytt i Ubuntu 21.04 ’Hirsute Hippo’

Linux Apr 22, 2025

Den helt nya utgåvan av Ubuntu 21.04 , Hirsute Hippo, släpptes den 22 april 2021. Det är en tillfällig frisättning av den populära Linux-distributionen, med endast nio m..


Vad är ”root” på Linux?

Linux Jul 7, 2025

fatmawati achmad zaenuri / shutterstock.com Rotanvändaren är den mest kraftfulla enheten i Linux-universum med obegränsade krafter, för bättre eller sä..


Vad är nytt i GNOME 41?

Linux Sep 16, 2025

Linux-skrivbordsmiljö Gnome 41 släpptes den 22 september 2021. Kommer varmt på hälarna av GNOME 40s paradigm-skiftande arbetsflödesförändringar, levererar GNOME 41 någ..


Hur att köra Android-appar på Linux

Linux Oct 19, 2025

Quietbits / Shutterstock.com Har du någonsin velat köra en Android-app på Linux men ville inte röra med debugging broar, utvecklingsmiljöer eller sidloadi..


Kategorier