Mam działającą instancję amazonu ec2 Linux powiązaną z parą kluczy (p1) i pobrałem klucz prywatny na pulpit główny. Teraz w pracy utworzyłem parę kluczy (p2) na pulpicie roboczym i zaimportowałem klucz publiczny do Amazon za pomocą konsoli AWS.
W domu chcę dodać klucz publiczny pary kluczy p2, który ma zostać dodany do authorized_keys
mojej instancji AMI (do której mogę obecnie uzyskać dostęp tylko z domu). Jednak zapomniałem zabrać ze sobą klucza publicznego p2, więc czy mogę w jakiś sposób wyeksportować ten klucz publiczny z Amazon.
Prawidłowe polecenie ssh-keygen to jednak:
źródło
chmod 400 your_private_key.pem
jeśliPodałem już jedną odpowiedź, która korzysta z woluminów EBS, aby uzyskać dostęp do klucza publicznego ssh, ale oto inny sposób, aby uzyskać do niego dostęp, uruchamiając tymczasową instancję EC2 za pomocą skryptu danych użytkownika, który wysyła klucz publiczny do wyjścia konsoli. Oto kroki:
Zapisz następujący kod w pliku o nazwie
output-ssh-key.userdata
na komputerze lokalnym. NIE URUCHAMIAJ TEGO POLECENIA LOKALNIE!Uruchom zwykłą instancję Ubuntu 10.04 LTS z powyższym plikiem jako skrypt danych użytkownika. Podaj parę kluczy, dla której chcesz odzyskać publiczny klucz ssh:
Żądaj wyjścia konsoli od instancji, dopóki nie wyświetli się twój publiczny klucz ssh. Podaj identyfikator instancji zwrócony z komendy run-instances:
W ciągu 2-10 minut otrzymasz taki wynik:
Tymczasowa instancja zakończy się automatycznie w ciągu niecałej godziny, ale możesz ją rozwiązać samodzielnie, jeśli chcesz mieć pewność, że nie obciążą Cię więcej niż dwa centy, których uruchomienie będzie kosztować.
źródło
Jeśli masz prywatny klucz SSH, możesz ponownie wygenerować składnik klucza publicznego, po prostu uruchamiając następującą komendę ssh-keygen :
Tyle jest prosta część ... Konsola AWS i API nie obsługują wypychania 2 par kluczy podczas uruchamiania instancji EC2. Jest to ćwiczenie, które administrator systemu może wykonać w inny sposób.
Jeśli masz dostęp do klucza tożsamości, który został już autoryzowany, możesz po prostu wykonać następującą komendę ssh-copy-id :
Spowoduje to automatyczne skopiowanie danego klucza publicznego na serwer i do
~user/.ssh/authorized_keys
pliku oraz zapewnienie odpowiednich uprawnień do pliku.Bardziej eleganckim sposobem byłoby włączenie dodatkowych kluczy tożsamości do procesów zarządzania konfiguracją. W moim przypadku pociąga to za sobą dodanie dodatkowych kluczy do konfiguracji Puppet dla węzła.
Na marginesie, osobiste preferencje, ale korzystałyby z lepszej metody zarządzania kluczami SSH niż zwykłe dołączanie oddzielnych kluczy do pracy i lokalizacji domu. Jak wspomniałem w poprzednim pytaniu , przechowuję klucze na dysku USB, który trzymam przy sobie, a nie na dowolnym komputerze, którego używam.
źródło
Inną opcją byłoby dodanie krótkiego skryptu w danych_użytkownika, który po prostu dodaje kolejny klucz ssh do roota:
Następnie możesz zalogować się do komputera jako root
ssh -l root -i <KEYFILE> URL
i po prostu odczytać klucz z uprawnionych kluczy użytkownika ec2_user, ubuntu lub jak to się nazywa.Jedyna rzecz - musisz udostępnić maszynę publicznie i upewnić się, że dostęp do portu 22 jest możliwy z zewnątrz.
źródło