Mam serwer Ubuntu na Amazon EC2, którego używam do programowania, a dziś głupio wyczyściłem wszystko z mojego ~/.ssh/authorized_keys
pliku. Na szczęście mam otwarte SSH, więc nadal jestem połączony i mogę naprawić plik, ale kiedy próbuję przywrócić plik klucza, nie działa. Nadal dostaję odmowę dostępu z serwera na moim komputerze lokalnym.
authorized_keys
ma uprawnienia 600. Próbowałem dołączyć mój klucz SSH do ssh-rsa i pozostawić wyłączony ssh-rsa. Próbowałem też ustawić klucz SSH jako jedną linię, ale to też nie zadziałało.
Czy jest coś jeszcze, co muszę zrobić, na przykład jak ponownie załadować plik?
data-recovery
ssh
amazon-ec2
Dave Long
źródło
źródło
Odpowiedzi:
Nigdy nie należy zapisywać pliku z zawartością zaczynającą się
-----BEGIN RSA PRIVATE KEY-----
na serwerze, czyli na kluczu prywatnym . Zamiast tego musisz umieścić klucz publiczny w~/.ssh/authorized_keys
pliku.Ten klucz publiczny ma
.pub
rozszerzenie podczas generowania za pomocą,ssh-keygen
a jego treść zaczyna się odssh-rsa AAAAB3
. (Format binarny jest opisany w odpowiedziach na to pytanie ).Uprawnienia
~/.ssh
na serwerze powinny wynosić 700. Plik~/.ssh/authorized_keys
(na serwerze) powinien mieć tryb 600. Uprawnienia klucza (prywatnego) po stronie klienta powinny wynosić 600.Jeśli klucz prywatny nie był chroniony hasłem i umieszczasz go na serwerze, zalecamy wygenerowanie nowego:
Możesz to pominąć, jeśli masz całkowitą pewność, że nikt nie odzyska skasowanego klucza prywatnego z serwera.
Jeśli to nie pomoże, uruchom
ssh
opcje większej szczegółowości:Po stronie serwera możesz przejrzeć
/var/log/auth.log
szczegółowe informacje.źródło
ssh-keygen -t rsa
i umieścić nowo utworzonyid_rsa.pub
plik~/.ssh/authorized_keys
na serwerze. Zobacz także docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…ssh-keygen -y -f key.pem > key.pub
Alternatywny sposób instalacji klucza publicznego na komputerze zdalnym
authorized_keys
:Niektóre zalety:
nie wymaga
ssh-copy-id
instalacji.gwarancje, które
mkdir
działają przed próbą dołączeniaid_rsa.pub
doauthorized_keys
.źródło
mkdir -p ~/.ssh
części odpowiedzi udzielonej przez @MariusButucumask 077 && mkdir -p ~/.ssh
to wszystko, co musisz zrobić, aby upewnić się, że będzie działać poprawnie.Jeśli masz uwierzytelnianie oparte na logowaniu, użyj,
ssh-copy-id
aby dołączyć klucze publiczne do zdalnego serwera.źródło
brew install ssh-copy-id
sudo port install openssh +ssh_copy_id
.+ssh_copy_id
Instaluje OpenSSH z wariantem ssh_copy_id.źródło
Najłatwiejszym sposobem jest skopiowanie i wklejenie ...
Najpierw wyświetl / skopiuj zawartość lokalnego klucza publicznego, w
id_rsa.pub
tym początkową „ssh-rsa”, aż zakończy się na Twój adres e-mail:Następnie edytuj
authorized_keys
na serwerze i wklej zawartość schowka poniżej innych kluczy w tym pliku:I zapisz
Ctl+O
, zamknij plikCtl+X
, wyjdź z sesji SSHexit
i spróbuj zalogować się ponownie, aby potwierdzić, że zadziałało. Jeśli nie poprosił o hasło, działało.źródło
Pomyślałem, że mogę się do tego przyczynić, ponieważ chodzi konkretnie o instancje AWS, a wszystkie odpowiedzi traktują problem tylko jako problem z Linuksem, tak jakby był to sprzęt. Pierwszą rzeczą, którą musisz zrozumieć, jest to, że nigdy nie powinieneś nigdy nie traktować instancji EC2 jako sprzętu. To po prostu stworzy dla ciebie więcej pracy. Traktuj je jako niestabilne. To największa przeszkoda, jaką widzę w AWS. Zrób AMI dla swojej instancji i wstrzyknij potrzebny klucz do nowej instancji. cloud-init zaopiekuje się tobą. Bardziej szczegółowo wszystko, co musisz zrobić, to użyć poprawnego klucza publicznego podczas tworzenia nowej instancji z AMI oryginału. Jeśli, podobnie jak w komentarzach do zatwierdzonej odpowiedzi, chcesz wygenerować własną parę kluczy plików pub i pem, AWS oferuje opcję przesłania kluczy publicznych do użytku w EC2.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws
źródło
Po zapisaniu klucza publicznego należy zapisać klucz prywatny w katalogu i pliku na komputerze. A w sekcji uwierzytelniania ssh on putty powinieneś wskazać plik klucza prywatnego, który zapisałeś na pulpicie. To będzie działać. Mi to pasuje.
źródło
Pobierz powłokę na zdalnym komputerze, na którym chcesz umieścić klucz, a następnie możesz uruchomić ten jeden wiersz, aby utworzyć niezbędne pliki i katalogi, ustawić ich uprawnienia i dołączyć klucz do pliku. Oczywiście musisz zmienić
KEYGOESHERE
część poniżej i komentarz po niej.źródło
Oto wariant, w którym możesz mieć listę nazw plików kluczy publicznych w pliku tekstowym, a duża partia plików kluczy publicznych znajduje się również w tym samym katalogu.
Ta odmiana może być pomocna, jeśli podajesz ogromną listę plików kluczy publicznych do zaimportowania :-)
źródło