Jak korzystać z zaszyfrowanych haseł w bash skryptów

Jun 30, 2025
Dystrybucja
Fatmawati Achmad Zaenuri / Shutterstock.com

Jeśli jesteś zmuszony do użycia skryptu Linux, aby połączyć się z zasobem chronionym hasłem, prawdopodobnie czujesz się nieswojo na umieszczenie tego hasła w skrypcie. OpenSSL rozwiązuje ten problem dla Ciebie.

Hasła i skrypty

To nie świetny pomysł na umieszczenie haseł w skryptach powłoki. W rzeczywistości jest to naprawdę zły pomysł. Jeśli skrypt spada do niewłaściwych rąk, każdy, kto czyta, może zobaczyć, co jest hasło. Ale jeśli jesteś zmuszony do użycia skryptu, co jeszcze możesz zrobić?

Możesz wprowadzić hasło ręcznie, gdy proces osiągnie ten punkt, ale jeśli skrypt będzie uruchomiony bez nadzoru, który nie zadziała. Na szczęście istnieje alternatywa dla trudnego kodowania haseł do skryptu. Kontraktowo, używa innego hasła do osiągnięcia tego, wraz z silnym szyfrowym.

W naszym przykładowym scenariuszu musimy wykonać zdalne połączenie z komputerem Fedora Linux z naszego komputera Ubuntu. Będziemy korzystać ze skryptu Bash Shell, aby wykonać połączenie SSH z komputerem Fedora. Skrypt musi uruchamiać bez nadzoru, a nie chcemy umieścić hasła do zdalnego konta w skrypcie. Nie możemy używać kluczy SSH w tym przypadku, ponieważ udajemy, że nie mamy żadnej kontroli ani uprawnień administratora na komputerze Fedora.

Wykorzystujemy dobrze znany OPENSSL Toolkit. Aby obsługiwać szyfrowanie i użyteczność shphass. Aby nakarmić hasło do polecenia ssh.

ZWIĄZANE Z: Jak tworzyć i zainstalować klucze SSH z muszli Linux

Instalowanie openssl i shphass

Ponieważ wiele innych narzędzi szyfrowania i bezpieczeństwa używają openSSL, może być już zainstalowany na komputerze. Jeśli jednak nie jest, trwa tylko chwilę, aby zainstalować.

Na Ubuntu wpisz to polecenie:

 sudo apt otrzymaj openssl 

Żeby zainstalować shphass. , użyj tego polecenia:

 Sudo Apt Install Sshpass 

Na Fedorze musisz wpisać:

 Sudo DNF Zainstaluj openssl 

Polecenie do zainstalowania shphass. jest:

 Sudo DNF Zainstaluj SshPass 

Na Manjaro Linux możemy zainstalować OpenSSL z:

 sudo pacman -sy openssl 

Wreszcie, aby zainstalować shphass. , użyj tego polecenia:

 Sudo Pacman -Ssy Sshpass 

Szyfrowanie na linii poleceń

Zanim dotrzemy do użycia opensssl. Polecenie ze skryptami, zapoznajmy się z nim, używając go w wierszu poleceń. Powiedzmy, że hasło do konta na komputerze zdalnym jest Rusty! Herring.pitshaft. . Szyfrujemy to hasło za pomocą opensssl. .

Musimy zapewnić hasło szyfrowania, gdy robimy. Hasło szyfrowania jest używane w procesach szyfrowania i deszyfrowania. Istnieje wiele parametrów i opcji w opensssl. Komenda. Spójrzmy na każdego z nich za chwilę.

 Echo "Rusty! Herring.pitshaft" | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -Iter 100000 -Salt -pass Pass: 'Pick.your.password' 

Używamy Echo wysłać hasło do konta zdalnego przez rurę i do opensssl. Komenda.

ten opensssl. Parametry to:

  • Eng -aes-256-CBC : Typ kodowania. Używamy Zaawansowany Standard Szyfrowania 256-bitowy szyfr klucza z łańcuchem szyfrowania.
  • -md sha512. : Typ trawienia wiadomości (Hash). Używamy algorytmu kryptograficznego Sha512.
  • -a : To mówi opensssl. Aby zastosować kodowanie bazowego-64 po fazie szyfrowania i przed fazą deszyfrowania.
  • -PBKDF2. : Korzystanie z funkcji derywacji kluczy na bazie hasła 2 (PBKDF2) sprawia, że ​​jest to znacznie trudniejsze dla ataku brutalnego siły, aby odgadnąć hasło. PBKDF2 wymaga wielu obliczeń do wykonywania szyfrowania. Atakujący musiałby replikować wszystkie te obliczenia.
  • -iter 100000. : Ustawia liczbę obliczeń, których użyje PBKDF2.
  • -Sól : Korzystanie z losowo stosowanej wartości soli sprawia, że ​​zaszyfrowane wyjście inne za każdym razem, nawet jeśli zwykły tekst jest taki sam.
  • -Pass Pass: 'Pick.your.password' : Hasło musimy użyć do odszyfrowania zaszyfrowanego zdalnego hasła. Zastąpić Pick.your.password. z solidnym hasłem wyboru.

Zaszyfrowana wersja naszego Rusty! Herring.pitshaft. Hasło jest zapisywane do okna terminala.

Odszyfrować to, musimy przekazać, że szyfrowany ciąg opensssl. z tymi samymi parametrami, które używane do szyfrowania, ale dodaliśmy w -D Opcja (deszyfruj).

 Echo U2FSDGVKX19IIIRNENTSG + WM / UKJTZJWNYOPJYPHYRDYZH5LVZRPIGO1S0GOZU46 | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -Iter 100000 -Salt -pass Pass: 'Pick.your.password' 

Ciąg jest odszyfrowany, a nasz oryginalny tekst - hasło do zdalnego konta użytkownika - jest zapisywany do okna zaciskowego.

Dowodzi to, że możemy bezpiecznie szyfrować nasze zdalne hasło konta użytkownika. Możemy również odszyfrować go, gdy potrzebujemy go za pomocą hasła, który dostarczyliśmy w fazie szyfrowania.

Ale czy to faktycznie poprawia naszą sytuację? Jeśli potrzebujemy hasła szyfrowania, aby odszyfrować hasło do konta zdalnego, na pewno hasło deszyfrowania będzie musiało być w skrypcie? Cóż, tak, tak. Ale zaszyfrowane hasło konta użytkownika zdalnego zostanie zapisane w innym, ukrytym pliku. Uprawnienia w pliku uniemożliwią każdemu, ale użytkownik korzeniowy systemu, oczywiście - dostęp do niego.

Aby wysłać wyjście z polecenia szyfrowania do pliku, możemy użyć przekierowania. Plik jest nazywany ".secret_vault.txt". Zmieniliśmy hasło szyfrowania do czegoś bardziej solidnego.

 Echo "Rusty! Herring.pitshaft" | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -Iter 100000 -Salt -Spass Pass: 'Secret # Vault! Hasło' & GT; .secret_vault.txt 

Nic widocznego jest widoczne, ale hasło jest szyfrowane i wysłane do pliku ".secret_vault.txt".

Możemy przetestować, że działało przez odszyfrowanie hasła w ukrytym pliku. Zauważ, że używamy Kot tu nie Echo .

 Cat .secret_vault.txt | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -iter 100000 -Salt -Spass Pass: "Secret # Vault! Hasło" 

Hasło jest pomyślnie odszyfrowane z danych w pliku. Dobrze posługiwać się Chmod. Aby zmienić uprawnienia w tym pliku, aby nikt inny nie mógł uzyskać do niego dostępu.

 Chmod 600.Secret_vault.txt 
 LS -L .Secret_vault.txt 

Korzystanie z maski z uprawnień 600 usuwa cały dostęp dla każdego innego niż właściciel pliku. Możemy teraz przejść do pisania naszego skryptu.

ZWIĄZANE Z: Jak korzystać z polecenia Chmod na Linuksie

Używanie OpenSSL w skrypcie

Nasz skrypt jest dość prosty:

 #! / Bin / bash

# Nazwa konta zdalnego
Remote_user = Geek.

# Hasło do zdalnego konta
Remote_passwd = $ (CAT

# komputer zdalny
Remote_linux = Fedora-34.Local

# Podłącz do komputera zdalnego i umieść znacznik czasu w pliku o nazwie script.log
sshpass -p $ Remote_passwd ssh -t $ Remote_user @ $ Remote_linux & LT; _Remote_commands.
Echo $ Użytkownik "-" $ (data) & gt; & gt; /home/inremote_user/script.log.
_remote_commands 
  • Ustawiamy zmienną o nazwie Remote_user. do "Geek".
  • Następnie wywołaliśmy zmienną Remote_passwd. Do wartości odszyfrowanych hasła wyciągniętego z pliku ".secret_vault.txt", używając tego samego polecenia, którego używaliśmy chwilę
  • Lokalizacja komputera zdalnego jest przechowywana w zwanym zmiennym Remote_linux. .

Dzięki tej informacji możemy użyć ssh. polecenie do podłączenia do komputera zdalnego.

  • ten shphass. Polecenie to pierwsze polecenie na linii połączenia. Używamy go z -P (Hasło) opcja. Pozwala nam to określić hasło, które powinno zostać wysłane do ssh. Komenda.
  • Używamy -T (Wyłącz opcję alokacji Pseudo-Terminal) z ssh. Ponieważ nie musimy mieć pseudo-tty przydzielonego do nas na komputerze zdalnym.

Używamy krótkiego tutaj dokument Aby przejść polecenie do komputera zdalnego. Wszystko między nimi _Remote_commands. Struny są wysyłane jako instrukcje do sesji użytkownika na komputerze zdalnym - w tym przypadku, jest to pojedyncza linia skryptu bash.

Polecenie wysłane do komputera zdalnego po prostu zaloguje nazwę konta użytkownika i znacznik czasu do pliku o nazwie "Script.log".

Skopiuj i wklej skrypt do edytora i zapisz go w pliku o nazwie "Go-remote.sh". Pamiętaj, aby zmienić szczegóły dotyczące odzwierciedlenia adresu własnego komputera zdalnego, zdalnego konta użytkownika i hasła zdalnego konta.

Posługiwać się Chmod. aby wykonywać skrypt.

 Chmod + X Go-remote.SH 

Pozostaje tylko wypróbować go. Wyrażajmy nasz skrypt.

 ./ Go-remote.SH 

Ponieważ nasz skrypt jest minimalistycznym szablonem do skryptu nienadzorowanego, nie ma wyjścia do terminala. Ale jeśli sprawdzimy plik "skrypt.log" na komputerze Fedora, widzimy, że zdalne połączenia zostały pomyślnie wykonane i że plik "Script.log" został zaktualizowany za pomocą znaczników czasu.

 Cat Script.log 

Twoje hasło jest prywatne

Twoje hasło do konta zdalnego nie jest nagrane w skrypcie.

I chociaż hasło deszyfrujące jest, W skrypcie nikt inny nie może uzyskać dostępu do pliku ".secret_vault.txt" w celu odszyfrowania go i pobierania hasła do konta zdalnego.


Dystrybucja - Najpopularniejsze artykuły

Jak zablokować Mac za pomocą zacisku

Dystrybucja Feb 16, 2026

Jednym z pierwszych zasad cyberbezpieczeństwa jest zawsze zablokowanie komputera przed wyjściem od niego. Chociaż może nie być najszybszym sposobem, możesz zablokować apple Mac za..


Jak zaktualizować Ubuntu Linux

Dystrybucja Aug 27, 2025

Tomeqs / Shutterstock.com. Potrzebujesz najnowszych i największych w oprogramowaniu Ubuntu? Nie musisz być Pro. Czytaj dalej, aby odkryć, jak zaktualizowa..


Jak odwrócić jądro w Linuksie

Dystrybucja Sep 30, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Jeśli Twój komputer Linux nagle ma problemy po aktualizacji do systemu, możliwe jest Linux Kernel. ..


Co nowego w Linux Kernel 5.14

Dystrybucja Sep 9, 2025

Sean Locke Fotografia / Shutterstock Jak Linux zamienia 30 lat, kernel 5.14 została wydana. Zawiera on zwykle szeroką ofertę wewnętrznych poniżej-the-kapt..


Co nowego w Ubuntu 21.10 "Impish Indri"

Dystrybucja Oct 14, 2025

Kanoniczny Ubuntu 21.10 "Impish Indri" było wydany W dniu 14 października 2021. Funkcjonuje Gnome 40. , nowe jądro i zaktualizowane apli..


Jak znaleźć PID procesu Linux z PIDOF lub PGREP

Dystrybucja Nov 15, 2025

Praca z procesem Linuksa często oznacza znajomość jego identyfikatora procesu lub PID. Jest to unikalny numer podany każdemu elementowi działającego oprogramowania. Oto dwa sposoby, aby d..


7 błędów nowi użytkownicy Linux popełniają (i jak ich unikać)

Dystrybucja Nov 11, 2025

Uczenie się Linuksa może być frustrującym doświadczeniem, w którym wszystko wydaje się być bitwą. Unikanie tych typowych błędów sprawi, że wprowadzenie i przyjęcie Linuksa będzie..


Jak wymienić usługi Linux za pomocą SystemCtl

Dystrybucja Oct 18, 2025

Twój komputer Linux opiera się na wielu zadaniach w tle o nazwie Services lub Demons. W dystrybucjach opartych na systemd masz wbudowane polecenia, które pozwalają zobaczyć, które usługi..


Kategorie