SSH autoryzowane klucze przykładowe użycie

SSH autoryzowane klucze przykładowe użycie

SSH (Secure Shell) jest protokołem używanym do zdalnego i bezpiecznego (szyfrowanego) systemów dostępu. Serwer SSH działa na zdalnym komputerze, a klient SSH na twoim komputerze. Komunikacja między klientem a serwerem jest typowa za pośrednictwem wiersza poleceń. Teraz istnieje kilka sposobów uwierzytelniania połączenia-uwierzytelnianie hasła, uwierzytelnianie publiczne/prywatne (przy użyciu pliku autoryzowanego_key) i uwierzytelniania hosta (za pomocą znanego pliku_hostu).

  1. W metodzie uwierzytelniania opartego na hasłach hasło jest wymagane hasło do zalogowania się. Hasła mogą być długie i żmudne do zapamiętania; Jednak, co gorsza, mogą być brutalne (zhakowane)! Proste skrypty Pythona mogą brutalnie skupić się na najgorszych hasłach i jako takie stanowią ryzyko bezpieczeństwa.
  2. W uwierzytelnieniu publicznym/prywatnym nie jest wymagane hasło do zalogowania się (logowanie bez hasła). W rzeczywistości uwierzytelnianie oparte na kluczu jest bezpieczniejsze niż uwierzytelnianie hasła, ponieważ nie ma potrzeby pisania hasła. W takich okolicznościach serwer po prostu weryfikuje, że masz klucz prywatny! Ten klucz prywatny jest plikami, a zatem można go skopiować (ryzyko bezpieczeństwa); Jest jednak znacznie silniejszy i dłuższy niż hasło 8-znakowe. Ponadto plik autoryzowanego_keys jest używany do uwierzytelniania użytkowników przez serwer.
  3. W znanej metodzie uwierzytelniania hosta znany plik hosta zawiera hosty, które mogą się połączyć. Plik znany_hosts służy do uwierzytelniania serwerów przez użytkowników.

W tym samouczka.

Konfigurowanie uwierzytelniania opartego na kluczu

Podczas konfigurowania skomplikowanych systemów, takich jak te, musimy upewnić się, że pliki konfiguracyjne są odpowiednio skonfigurowane! Jeśli nie, cały proces nie zadziała! Teraz są tutaj dwa systemy - klient i serwer. /etc/ssh/sshd_config Na serwerze na serwerze wyklucz je i skonfiguruj w następujący sposób:

Pertrootlogin Tak
HasłoAuthentication Tak
ChallengerEsponseAutentication nr

Następnie musimy gatunek kluczy publicznych i prywatnych. Aby wygenerować klucze, uruchom (na komputerze klienckim):

ssh-keygen

Po uruchomieniu SSH-KeyGen otrzymasz kilka pytań. Pierwszym pytaniem będzie lokalizacja, w której chcesz zapisać klucze. Jeśli zostawisz to puste, zapisze go w domyślnym folderze. W moim przypadku jest to/dom/klient/.ssh/id_rsa, gdzie id_rsa jest faktycznym kluczem prywatnym i .SSH to folder. Następnie zostaniesz poproszony o wprowadzenie palenia. Nie musisz wprowadzać hasła, ale dodaje to kolejną warstwę bezpieczeństwa. Passowa fraza służy do szyfrowania klucza prywatnego.

To stworzy klucz publiczny i klucz prywatny.

~/.ssh/id_rsa (klucz prywatny)
~/.ssh/id_rsa.pub (klucz publiczny)

DOT SSH oznacza, że ​​domyślnie jest to ukryty folder. Ponadto do szyfrowania używany jest klucz publiczny, podczas gdy klucz prywatny jest używany do deszyfrowania. I chociaż klucz publiczny może być zasmowywany wszędzie i wszędzie, klucz prywatny musi być bezpieczny! Twój klucz prywatny musi pozostać w Twojej sieci przez cały czas! Jeśli stracisz klucz prywatny, równie dobrze możesz założyć, że twój system został naruszony. To gorsze niż utrata hasła, ponieważ jest to login bez hasła).

Następnie musimy skopiować klucz publiczny do serwera i do tego używamy następującego kodu (który jest uruchamiany na komputerze klienckim):

ssh-copy-id

Na przykład w moim przypadku pisałbym:

Np.: SSH-Copy-ID [email protected]

Ssh-copy-id jest taki Nazwa serwera to nazwa serwera, a IP to jego adres IP. W tym przypadku, "serwer”To nazwa mojego serwera i 10.0.2.15 to jego adres IP. Gdy poprzedni kod zostanie wprowadzony do komputera klienta, klient będzie monitorował hasło serwera, wprowadzić go. Skopiuje klucz publiczny na serwer pod adresem ~/.ssh/autoryzowane_keys i później Wyświetl ”liczbę klawiszy dodano:„ na komputerze klienta.

Maszyna kliencka poprosi również o próbę logowania za pomocą:

ssh
(Np.: SSH [email protected])

Drugi klucz publiczny jest kopiowany na serwerze, plik o nazwie autoryzowany_keys zostanie utworzony z kluczem publicznym. Jak widać na poniższych zdjęciach, oto ukryty folder o nazwie /.SSH wygrał mój serwer; Po otwarciu pliku autoryzowanego_keys można zobaczyć klucz publiczny, który w nim wygenerowaliśmy.

Chociaż ten proces wydaje się dość prosty, możesz i prawdopodobnie napotkasz szereg błędów podczas konfigurowania procesu uwierzytelniania opartego na kluczu. W szczególności jeden jest następujący:

Błąd „agent przyznał, że nie podpisuje za pomocą klucza. Zezwolenie odrzucone. (klucz publiczny"

Możesz uzyskać ten błąd po skopiowaniu klucza publicznego do autoryzowany plik_keys. Użyj następującego kodu na komputerze klienckim, aby go naprawić:

SSH-ADD

Po skonfigurowaniu wszystkiego musisz teraz wyłączyć uwierzytelnianie hasła na komputerze serwerowym. Odbywa się to poprzez wejście do /etc/ssh/sshd_config plik na serwerze i ustawienie HasłoAuthentication Nr:

Hasło Automatyka nr

Po ustawieniu uwierzytelnienia hasła na nie, jeśli spróbujesz zalogować się za pośrednictwem SSH, powinieneś zostać automatycznie zalogowany. (Pamiętaj, że nie ustawiłem pyszniczki.)

Autoryzowany plik_keys

Niezależnie od rodzaju używanego klucza (np.: RSA, ECDSA itp.), aby korzystać z uwierzytelniania opartego na kluczu, wygenerowany klucz publiczny musi zostać skopiowany na serwer autoryzowany plik_keys. Zazwyczaj, jeśli ten plik nie istnieje, serwer próbuje uwierzytelniania hasła. Pamiętaj również, że każdy klucz publiczny jest przechowywany w jednym wierszu w autoryzowany plik_keys. Pamiętaj też, aby dać /.Folder SSH, klucze prywatne/publiczne i autoryzowany plik_keys odpowiednie uprawnienia - ty i ty sam powinniście być w stanie z tym zepsuć. Zauważ, że możesz ręcznie skopiować klucz publiczny do /.Folder SSH Również, a jeśli wykonane ręcznie, odpowiednie uprawnienia są ważną częścią procesu.

W przypadku ręcznego dodania drugiego klucza publicznego do autoryzowany plik_keys, Zakończ linię „Newlin”Lub powrót. Jeśli tego nie zrobisz, pomyśli, że dwa odrębne klucze są jednym kluczem i żaden nie będzie działał.

/.Katalog SSH powinien mieć następujące pozwolenie:

CHMOD 700 ~/.ssh

autoryzowany plik_keys powinien mieć następujące pozwolenie:

CHMOD 600 ~/.ssh/autoryzowane_keys

klucz publiczny powinien mieć następujące pozwolenie:

CHMOD 644 ~/.ssh/id_rsa.pub

Klucz prywatny powinien mieć następujące pozwolenie:

CHMOD 600 ~/.ssh/id_rsa

Możesz także udzielić innym użytkownikom dostępu do twojego serwera. W tym celu po prostu dostaniesz ich klucz publiczny i umieszczasz go w autoryzowany plik_keys (w nowej linii). Ten ostatni zapewni im dostęp do twojego serwera.

Zazwyczaj po skonfigurowaniu uwierzytelniania opartego na klawiszach użytkownik może uzyskać dostęp do zdalnego komputera z w pełni funkcjonalnymi poleceniami. Jednak możesz ograniczyć dostęp do jednego polecenia, które chcesz, używając autoryzowany plik_keys. To się nazywa "Wymuszone polecenie".

To jest format autoryzowany plik_keys Jeśli chcesz wymusić polecenie:


Były:
Command = ”data” ssh-rsa aasasa […]

W moim przykładzie umieściłem polecenie „datę” przed kluczem publicznym w pliku autoryzowanym_keys (patrz na zdjęciu poniżej). Wynik tego dodanego polecenia do pliku autoryzowanego_keys jest to, że dostaję tylko datę na komputerze mojego klienta. Polecenie, które określiłeś, a tylko to polecenie zostanie wykonane lub dozwolone.


Wada do wymuszonego polecenia w autoryzowany plik_keys jest to, że zazwyczaj możesz umieścić tylko jedno polecenie na autoryzowany klucz publiczny. Aby to ominąć, potrzebujesz skryptu Bash. Jeśli masz do czynienia ze skryptem Bash, użyjesz następującej notacji:

polecenie =

Załóżmy, że piszę skrypt o nazwie ssh_script.cii (To tylko przykładowy skrypt):

#!/bin/bash
Ps3 = 'Wybierz opcję:'
wybory = („Zdobądź datę” „Zrób katalog” „Zrób plik” „wyjście”)
Wybierz opt w „$ wyborach [@]”; Do
sprawa $ opt in
„Zdobądź datę”)
CurrentDate = 'data +"%y-%m-%d%t"'
echo $ currentDate
;;
„Zrób katalog”)
echo „Jak nazywa się katalog?"
Przeczytaj Namenir
mkdir $ mitedir
;;
„Zrób plik”)
echo „Wprowadź tekst, który chcesz umieścić w pliku”
Przeczytaj tekst
echo „Nazwa pliku proszę”
Przeczytaj nazwę pliku
echo $ text >> $ nazwa pliku
przerwa
;;
"Wyjście")
echo "dobrze! Do zobaczenia wkrótce!"
Wyjście
;;
*) echo „Nieprawidłowa opcja $ odpowiedz” ;;
esac
zrobione

Następnym krokiem jest uczynienie tego pliku wykonywalnego poprzez wpisanie następujących:

CHMOD +X SSH_SCRIPT.cii

Należy pamiętać, że jeśli nie uda ci się wykonywać ten plik, proces rzuci błąd! Tutaj umieściłeś plik, w którym właśnie utworzyłeś ~/.ssh jako ~/.ssh/ssh_script.cii, i napisz następujące w autoryzowany plik_key:

Były:
Command = ”/home/server/.ssh/ssh_script.sh ”ssh-rsa aasasa […]

Wynik jest następujący:

Kiedy ssh_script.plik sh (wykonywalny) jest umieszczony w ~/.Folder SSH (~/.ssh/ssh_script.cii), i że autoryzowany plik_keys jest zmodyfikowany, powinieneś zobaczyć wyniki skryptu Bash na komputerze klienckim (jak na powyższym obrazku). I to wszystko! Łatwy, wietrzny, piękny kod!

Uwierzytelnianie oparte na kluczu jest łatwym, szybkim i bezpiecznym sposobem logowania do zdalnego komputera za pomocą ssh. W szczególności, autoryzowany plik_keys ma świetny zastosowanie w uwierzytelnianiu użytkownika i określeniu, które polecenia są dozwolone przez użytkownika.

Szczęśliwe kodowanie!