Dla niektórych jest to prawdopodobnie głupio proste pytanie :)
Utworzyłem nową instancję linuksa na Amazon EC2 i jako część tego pobrałem plik .pem, aby umożliwić mi SSH.
Kiedy próbowałem ssh z:
ssh -i myfile.pem <public dns>
Mam:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).
Po tym wpisie próbowałem chmod +600 plik pem, ale teraz, gdy ssh, po prostu otrzymuję:
Permission denied (publickey).
Jaki błąd popełniam w szkole? Plik .pem znajduje się w moim folderze domowym (w systemie osx). Jego uprawnienia wyglądają następująco:
-rw-------@ 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
amazon-web-services
authentication
ssh
amazon-ec2
permissions
Matt Roberts
źródło
źródło
chmod 400 myfile.pem
tym, że wykorzystuje onmyfile.ppk
wygenerowane przez PuTTYgen z pliku pem.Odpowiedzi:
Problemem jest zły mod na pliku.
Łatwo rozwiązany przez wykonanie -
chmod 400 mykey.pem
Zaczerpnięte z instrukcji Amazon -
400 chroni go, czyniąc go tylko do odczytu i tylko dla właściciela.
źródło
ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IP
naprawiło problem. Może to powinna być zaakceptowana odpowiedź ...Prawdopodobnie używasz niewłaściwej nazwy użytkownika do logowania:
ubuntu
ec2-user
root
alboadmin
Aby się zalogować, musisz dostosować polecenie ssh:
HTH
źródło
Permission denied (publickey).
i nic więcej ...chmod 500 <path_to_pem_file>
powinno to zrobić.Wiem, że to bardzo późno do gry ... ale to zawsze działa na mnie:
krok 1
krok 2, po prostu ssh :)
na przykład
mam nadzieję, że to komuś pomoże.
źródło
ssh-agent -s
donosi SSH_AGENT_PID = 3409; ssh-add daje taki sam błąd jak wyżej ......... Każda pomoc tutaj plzOk, jedyne, co działało dla mnie, to:
Zmień uprawnienia klucza
Zaloguj się przy użyciu ec2-user i poprawnego adresu ec2-99 ... Adres ec2-99 znajduje się na dole konsoli aws, gdy jesteś zalogowany i widzisz swoje wystąpienie na liście
źródło
Spójrz na ten artykuł . Nie używasz publicznego DNS, ale formularz
gdzie nazwa jest widoczna na twoim panelu AMI
źródło
Zmień uprawnienia do pliku klucza za pomocą:
Zobacz dokumentację AWS dotyczącą łączenia się z instancją:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
źródło
W systemie Windows możesz przejść do właściwości pliku pem i przejść do zakładki bezpieczeństwa, a następnie do przycisku przewijania.
usuń dziedziczenie i wszystkie uprawnienia. następnie daj sobie pełną kontrolę. w końcu SSL nie spowoduje ponownego wystąpienia tego samego błędu.
źródło
Wiem, że na to pytanie już udzielono odpowiedzi, ale dla tych, którzy wypróbowali je wszystkie, wciąż pojawia się irytujący „Odmowa zezwolenia (publickey)”. Spróbuj uruchomić polecenie za pomocą SUDO. Oczywiście jest to rozwiązanie tymczasowe i należy poprawnie ustawić uprawnienia, ale przynajmniej pozwoli to stwierdzić, że bieżący użytkownik nie korzysta z wymaganych uprawnień (zgodnie z założeniami)
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
Gdy to zrobisz, otrzymasz następujący komunikat:
Please login as the user "ec2-user" rather than the user "root"
Co również jest słabo udokumentowane. W takim przypadku po prostu zrób to:
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user
A otrzymasz chwalebne:
źródło
W terminalu Mac robienie „chmod 400 xyz.pem” nie pomogło mi, ciągle powtarzano, że odmawia zgody. Dla użytkowników ubuntu sugerowałbym
ssh-add xyz.pem
ssh -i xyz.pem [email protected]
(zauważ, że użytkownik jest ubuntu)źródło
Najważniejsze wskazówki dotyczące kluczy SSH i uprawnień do plików:
plik klucza publicznego / .pub - 0600 (tylko do odczytu i zapisu przez właściciela)
chmod XXXX file/directory
źródło
ssh -i /.pem użytkownik @ host-maszyna-IP
Myślę, że dzieje się tak dlatego, że albo wprowadziłeś nieprawidłowe dane uwierzytelniające, albo używasz klucza publicznego, a nie prywatnego, albo twoje uprawnienia do portu są otwarte dla WSZYSTKICH do ssh. To źle dla Amazon.
źródło
Alternatywne logowanie przy użyciu PuTTY. Jest dobry, ale potrzebuje kilku kroków.
Używam PuTTY 0.66 w systemie Windows.
źródło
Oprócz innych odpowiedzi, oto co zrobiłem, aby to zadziałało:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
ssh-add ~/.ssh/key.pem
Teraz powinieneś być w stanie ssh EC2 (:
źródło
Wykonaj chmod 400 yourkeyfile.pem Jeśli twoją instancją jest Amazon Linux, użyj ssh -i yourkeyfile.pem ec2-user @ ip dla ubuntu ssh -i yourkeyfile.pem ubuntu @ ip dla centos ssh -i yourkeyfile.pem centos @ ip
źródło
Przyczyną tego błędu mogą być trzy przyczyny.
źródło
Problemem było to, że mój plik .pem znajdował się na jednej z partycji NTFS. Przeniosłem go na moją partycję linux (ext4).
Udzielono wymaganych uprawnień, uruchamiając:
chmod 400 my_file.pem
I zadziałało.
źródło
Patrząc na opis Twojego wpisu, uważam, że popełniłeś 2 błędy: -
Ustaw poprawne uprawnienia dla klucza prywatnego . Poniższe polecenie powinno pomóc Ci ustawić poprawne uprawnienia do plików.
chmod 0600 mykey.pem
Nieprawidłowy użytkownik ec2, którego próbujesz się zalogować .
Patrząc na dziennik debugowania, myślę, że odrodziłeś instancję Amazon linux. Domyślnym użytkownikiem tego typu instancji jest
ec2-user
. Jeśli instancja byłaby ubuntu, byłby to domyślny użytkownikubuntu
.ssh -i privatekey.pem default_ssh_user@server_ip
źródło: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
źródło
Lista kontrolna:
Czy używasz odpowiedniego pliku .pem klucza prywatnego?
Czy jego uprawnienia są ustawione poprawnie? (Moje interfejsy AMI marki Amazon działają z 644, ale Red Hat musi mieć co najmniej 600 lub 400. Nie wiem o Ubuntu.)
Czy używasz prawidłowej nazwy użytkownika w linii ssh? Amazon-branded = „ec2-user”, Red Hat = „root”, Ubuntu = „ubuntu”. Użytkownik może być określony jako „ssh -i pem nazwa użytkownika @ nazwa hosta” LUB ”ssh -l nazwa użytkownika -i pem nazwa hosta”
źródło
Po prostu zmień uprawnienia pliku pem na 0600, dopuszczając tylko dozwolonego użytkownika i będzie działał jak urok.
A potem spróbuj ssh, to zadziała idealnie.
źródło
Domyślnie uprawnienia nie zezwalają na klucz pem. Musisz tylko zmienić uprawnienia:
chmod 400 xyz.pem
a jeśli wystąpienie ubuntu, to połącz się używając:
ssh -i xyz.pem [email protected]
źródło
Plik klucza nie powinien być publicznie dostępny, więc użyj uprawnienia 400
Jeśli powyższe polecenie pokazuje błąd uprawnień, użyj
Teraz ssh na maszynie ec2, jeśli nadal napotykasz problem, użyj ec2-user
ssh -i keyfile.pem [email protected]
źródło
.400 chroni go, czyniąc go tylko do odczytu i tylko dla właściciela.
Odpowiedź znajdziesz w przewodniku ASW.
źródło
Poniżej przedstawiono proste kroki dla użytkownika systemu Linux, aby połączyć się z serwerem za pomocą pliku .pem:
Krok 1: Przejdź do lokalizacji pliku pem i skopiuj go do domowej lokalizacji .ssh.
Krok 2: Zmień uprawnienia
Krok 3: Uruchom następujące polecenie
Ponieważ to polecenie jest zbyt długie, możesz utworzyć jego alias, używając następujących poleceń:
Najpierw napisz to samo polecenie w następujący sposób.
Teraz uruchom ponownie system i użyj,
sshConnect
aby połączyć się z serwerem.źródło
To tylko problem z uprawnieniami z kluczem aws pem.
Wystarczy zmienić uprawnienia klucza pem na 400 za pomocą poniższego polecenia.
Jeśli nie masz uprawnień do zmiany uprawnień do pliku, możesz użyć polecenia sudo jak poniżej.
Mam nadzieję, że to zadziała dobrze.
źródło
Widziałem dwa powody tego problemu
1) klucz dostępu nie ma odpowiednich uprawnień. Klucze pem z domyślnym uprawnieniem nie mogą nawiązywać bezpiecznego połączenia. Musisz tylko zmienić uprawnienia:
chmod 400 xyz.pem
2) Sprawdź także, czy zalogowałeś się przy użyciu odpowiednich poświadczeń użytkownika. W przeciwnym razie użyj sudo podczas łączenia
sudo ssh -i {plik klucza} ec2-user @ {adres IP zdalnego hosta}
źródło
Twój klucz nie może być publicznie widoczny, aby SSH działał. W razie potrzeby użyj tego polecenia:
Przykład:
źródło
Zignoruj tę odpowiedź, jeśli jest ona dla ciebie nieistotna, ale z mojego doświadczenia widziałem, że ludzie mają problem,
Permission denied (publickey)
ponieważ po prostu wkleili swój klucz publiczny (na maszynie docelowej) bez pierwszej litery !Dzieje się tak, gdy używasz vima do edycji (wklejenia) klucza. Ponieważ vim domyślnie otwiera się w trybie poleceń (nie w trybie wstawiania ), wklejenie klawisza bez przełączania do trybu wstawiania (tj.
i
) Spowoduje pominięcie pierwszejs
litery, np. Zamiastw końcu wklejasz
Zanim wypróbujesz inne rozwiązania, sprawdź, czy poprawnie wkleiłeś klucz ! to znaczy
Tylko jeśli jesteś pewien, wykonaj kolejne kroki; próba ssh w trybie pełnym (tj. flaga
-v
) może wskazywać na rzeczywisty problem:Na marginesie, jak już wspomniano tutaj przez innych, w większości przypadków uruchomienie pustego agenta ssh (program, który trzyma klucze w pamięci) i dodanie klucza powinno rozwiązać problem:
źródło
Tym, co naprawiło to dla mnie, było przeniesienie pliku .pem do katalogu aplikacji. Powiedzmy, że fooapp to nazwa mojej aplikacji. Umieściłem go bezpośrednio tam.
źródło
Czasami może wystąpić błąd w folderze. Nie wiem dlaczego...
Możesz zmienić folder i spróbować ponownie. Na przykład możesz eksperymentować w zwykłych folderach (Pulpit, Pobieranie itp.).
Wypróbowałem tę metodę i zadziałałem
źródło
Ten błąd wynika tylko z pozwolenia.
Po prostu daj pozwolenie 400
#chmod 400 pemfilepath
źródło