EC2: wiele kluczy ssh dla instancji?

12

Czy można utworzyć więcej niż jeden klucz prywatny do SSH w instancji EC2? Jaka jest ogólna najlepsza praktyka w tym zakresie? Mamy wielu użytkowników, którzy potrzebują SSH do serwerów, a dystrybucja jednego klucza po prostu nie działa dobrze. Nie pozwala nam to na usunięcie użytkowników z SSH na serwerze, chyba że zmienimy klucz i dokonamy redystrybucji.

obdarzony wyobraźnią
źródło
Kiedy zarządzasz kluczem SSH dla zespołu, prawdopodobnie najlepiej spojrzeć na specjalistyczne narzędzie, takie jak Userify lub SSH UKM (Uwaga: Pracuję dla Userify).
Jamieson Becker,

Odpowiedzi:

5

Absolutnie; po prostu umieść wszystkie odpowiednie klucze publiczne w obrazie i powinieneś już iść. Wolę używać systemu zarządzania konfiguracją do zarządzania kluczami SSH; w ten sposób odwołanie dostępu użytkownika nawet w uruchomionych systemach jest dość trywialne. Istnieje również o wiele więcej… powiedzmy „pomysłowy”… sposoby radzenia sobie z tym, takie jak przechowywanie wszystkich kluczy SSH w LDAP, które scentralizują klucze SSH jak każde inne dane uwierzytelniające.

womble
źródło
2
Kiedy zaczniesz chcieć przechowywać klucze SSH w LDAP, czas dowiedzieć się o Kerberos.
84104,
1
Wdrożyłem Kerberos; osobiście uważam, że jest to rozwiązanie w poszukiwaniu problemu i dość wybredne i irytujące rozwiązanie.
womble
2
@ Ash: pytania pojawiają się w pytaniach, a nie w komentarzach.
womble
1
Zamierzałem zignorować powyższy komentarz - ale dla każdego, kto jest nowy na stronie, czułem, że powinienem wyjaśnić, że jeśli masz komentarz związany z realizacją danej odpowiedzi, wyjaśnień lub nieporozumień, należy to wyjaśnić w komentarzach, aby PO mógł dokonać edycji odpowiedzi w celu wyjaśnienia wszelkich możliwych nieporozumień.
Mazatec
2
Nie, powinieneś zadawać wyjaśnienia w komentarzach, jeśli odpowiedź nie dotyczy pierwotnie zadanego pytania. Jeśli chcesz zadać nowe pytanie na podstawie treści odpowiedzi, użyj dużego przycisku „Zadaj pytanie” w prawym górnym rogu strony, aby zadać nowe pytanie. To jest strona pytań i odpowiedzi, a nie forum dyskusyjne.
womble
6

Możesz także użyć standardowych mechanizmów ssh. Najlepszym rozwiązaniem byłoby uruchomienie na komputerze komputera w ssh-keygencelu wygenerowania pary kluczy. Następnie wysyłają Ci ~/.ssh/id_rsa.pub(lub id_dsa.pub, w zależności od wybranego algorytmu) i dodajesz jego zawartość do .ssh/authorized_keyshosta docelowego w katalogu osobistym konta użytkownika, do którego powinien mieć dostęp. Plik może zawierać więcej niż jeden klucz. Jeden na linię. I to wszystko! Ten sam klucz publiczny (id_rsa.pub) może być używany na dowolnej liczbie hostów - zawsze będzie identyfikował użytkownika.

Możesz to również zrobić na odwrót - uruchamiasz ssh-keygen i wysyłasz ~ / .ssh / id_rsa (lub id_dsa) do użytkownika. A użytkownik zapisuje plik do ~ / .ssh / id_rsa. Trzeba tylko pamiętać, aby zmienić uprawnienia do 600 (-rw -------) tego pliku, w przeciwnym razie ssh go nie zaakceptuje. Jest to oczywiście mniej bezpieczne, ponieważ prawdopodobnie klucz prywatny jest dystrybuowany za pośrednictwem poczty elektronicznej.

Można to również zrobić w PuTTY za pomocą PuTTYgen.

okej
źródło
1

Prostszy sposób pokazano poniżej.

Użytkownicy systemów Linux / Mac:

  1. Aby utworzyć klucze publiczne i prywatne, użyj następującego polecenia: $ ssh-keygen -t rsa -b 4096

  2. Prześlij klucz publiczny do folderu w swoim segmencie S3. Na przykład: S3> MyBucket> Keypair

  3. Zapisz i zabezpiecz swój klucz prywatny.

Dla użytkowników systemu Windows:

  1. Użyj puttygen, aby wygenerować klucze.
  2. Postępuj zgodnie z DigitalOcean, aby utworzyć klucze SSH.
  3. Prześlij klucz publiczny do S3> MyBucket> Keypair
  4. Zapisz i zabezpiecz swój klucz prywatny.

Następujące kroki są ważne podczas uruchamiania dowolnego Linux AMI.

  1. Upewnij się, że rola IAM ma rolę utworzoną za pomocą zasad AmazonS3FullAccess. Dzięki temu instancja może przyjąć rolę dostępu do segmentów S3. Jest to potrzebne do odczytania kluczy publicznych z S3 i skopiowania ich do profilu użytkownika

  2. Dodaj następujący kod w sekcji danych użytkownika w Konfiguruj szczegóły wystąpienia> Szczegóły zaawansowane (jako tekst):

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

Ta konfiguracja tworzy User1 i User2 i dodaje je do użytkowników sudo . Komenda aws s3 cp kopiuje klucze publiczne użytkowników z folderu S3 do ich .ssh/authorized_keys path. Ostatnią sekcją jest uruchamianie poleceń jako administrator bez potrzeby podawania hasła.

Istnieje wiele ulepszeń bezpieczeństwa, które można polecić tutaj. Chociaż nie jest to wyraźnie użyte w tym przykładzie, ograniczenie dostępu do segmentu S3 do określonego segmentu i znajomość konsekwencji bezpieczeństwa wyłączenia użycia hasła w sudo, to kilka rzeczy, które można wyróżnić. Używaj ich mądrze w zależności od twoich szczególnych potrzeb.

Vijay Shreenivos
źródło