Próba SSH do instancji Amazon Ec2-błąd uprawnień

To chyba głupie proste pytanie dla niektórych:)

Stworzyłem nową instancję Linuksa na Amazon EC2 i jako część tego pobrałem .plik pem pozwalający na 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).

Following this post I tried to chmod +600 the pem file, but now when I ssh I just get:

Permission denied (publickey).

Jaki szkolny błąd popełniam tutaj? The .plik pem znajduje się w moim folderze domowym (w systemie osx). On uprawnienia wyglądają tak:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem
Author: gvasquez, 2011-11-19

30 answers

Problem polega na tym, że w pliku znajduje się niewłaściwy mod.

Łatwo rozwiązać wykonując -

chmod 400 mykey.pem

Wzięte z instrukcji Amazona -

Twój plik klucza nie może być publicznie widoczny, aby SSH działał. Użyj tego polecenie w razie potrzeby: chmod 400 mykey.pem

400 chroni go, czyniąc go tylko do odczytu i tylko dla właściciela.

 1598
Author: Kof,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-12 12:30:56

Prawdopodobnie używasz niewłaściwej nazwy użytkownika, aby się zalogować:

  • większość obrazów Ubuntu ma Użytkownika ubuntu
  • AMI Amazona to ec2-user
  • większość obrazów Debiana ma albo root albo admin

Aby się zalogować, musisz dostosować polecenie ssh:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host

HTH

 271
Author: Till,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-21 19:31:53

Wiem, że to jest bardzo późno na mecz ... ale to zawsze działa dla mnie:

Krok 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

Krok 2, po prostu SSH w:)

ssh user_name@<instance public dns/ip>

Np.

ssh [email protected]
Mam nadzieję, że to komuś pomoże.
 65
Author: user2838357,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 08:11:11

Ok człowieku, jedyne co mi się udało to:

  1. Zmień uprawnienia klucza

    Chmod 400 mykey.pem

  2. Upewnij się, że logujesz się za pomocą ec2-user i poprawnego ec2-99... adres. Adres ec2-99 znajduje się na dole konsoli aws, gdy jesteś zalogowany i widzisz swoją instancję na liście

    Ssh - i mykey.pem [email protected]

 38
Author: bobobobo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 04:57:36

Spójrz na Ten artykuł . Nie używasz publicznego DNS, ale raczej formularza

ssh -i your.pem [email protected]

Gdzie nazwa jest widoczna na panelu AMI

 30
Author: renick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-19 11:43:29

W systemie windows można przejść do Właściwości pliku pem i przejść do zakładki zabezpieczenia, a następnie do przycisku advance.

Usuń dziedziczenie i wszystkie uprawnienia. więc daj sobie pełną kontrolę. w końcu SSL nie da ci ponownie tego samego błędu.

 20
Author: Nadeeshan Herath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-14 15:53:50

Zmień uprawnienia dla pliku klucza za pomocą :

chmod 400 key-file-name.pem

Zobacz dokumentację AWS dla połączenia z instancją:

Http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux

 17
Author: Ayush Goyal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-27 14:26:07

Wiem, że to pytanie zostało już udzielone, ale dla tych, którzy wypróbowali je wszystkie i nadal otrzymujesz irytujące " Permission denied (publickey)". Spróbuj uruchomić polecenie z SUDO. Oczywiście jest to rozwiązanie tymczasowe i powinieneś poprawnie ustawić uprawnienia, ale przynajmniej to pozwoli Ci zidentyfikować, że twój obecny użytkownik nie działa z uprawnieniami, których potrzebujesz (jak zakładałeś)

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

Kiedy to zrobisz otrzymasz wiadomość jak to:

Please login as the user "ec2-user" rather than the user "root"

Co jest również słabo udokumentowane. W takim razie zrób to:

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

I dostaniesz chwalebne:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|
 10
Author: Ricardo Cid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-07 14:43:03

W Terminalu Mac, wykonując " chmod 400 xyz.pem" nie pomógł mi, ciągle powtarzał, że odmawiam pozwolenia. Dla użytkowników ubuntu proponuję

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem [email protected] (zauważ, że użytkownikiem jest ubuntu)
 7
Author: Himalay Majumdar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-29 22:43:10

Ssh-i /.pem user@host-machine-IP

Myślę, że to dlatego, że albo wpisałeś złe poświadczenia lub używasz klucza publicznego, a nie prywatnego lub, Twoje uprawnienia portu są otwarte dla wszystkich do ssh. To jest złe dla Amazon.

 5
Author: Syed Priom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 08:20:28

Najlepsze praktyki dotyczące kluczy SSH i uprawnień do plików:

  • .katalog ssh-0700 (tylko przez właściciela)
  • klucz prywatny/.plik pem-0400 (tylko do odczytu przez właściciela)
  • Klucz publiczny/.plik pub-0600 (tylko do odczytu i zapisu przez właściciela)

    chmod XXXX file/directory

 5
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-07 23:42:01

Mogą być trzy przyczyny tego błędu.

    Używasz złego klucza.
  1. twój klucz nie ma odpowiednich uprawnień. Musisz chmod to do 400.
  2. Używasz niewłaściwego użytkownika. Obrazy Ubuntu mają użytkownika ubuntu, AMI Amazona jest ec2-user , a obrazy Debiana mają root lub admin
 5
Author: Jagatveer Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-12 06:53:20

Alternatywne logowanie za pomocą PuTTY. Jest dobry, ale wymaga kilku kroków.

    Weź swoje .pem, który został wygenerowany podczas tworzenia instancji EC2.
  1. Convert the .plik pem .ppk używając PuttyGen ponieważ PuTTY nie czyta .pem.
  2. Otwórz PuTTY i wprowadź swoją nazwę hosta, która jest nazwą użytkownika Twojej instancji + publiczny DNS (np. [email protected]). nie Twoja nazwa użytkownika konta AWS.
  3. Następnie przejdź do połączenie > SSH > Auth. Następnie dodaj swój .plik ppk. Kliknij Browse gdzie jest napisane "plik klucza prywatnego do uwierzytelniania" .
  4. Kliknij przycisk Otwórz i powinieneś być w stanie natychmiast nawiązać połączenie.

Używam PuTTY 0.66 W Windows.

 4
Author: jarvis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Oprócz innych odpowiedzi, oto co zrobiłem, aby to zadziałało:

  • skopiuj klucz do .folder ssh gdybyś nadal nie miał:

cp key.pem ~/.ssh/key.pem

  • Nadaje odpowiednie uprawnienia do klucza

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • Następnie dodaj klucz

ssh-add ~/.ssh/key.pem

Teraz powinieneś być w stanie ssh EC2 (:

 4
Author: Rodrigo Nantes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-04 15:55:52

Zrób 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

 2
Author: sathee005,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-18 11:12:06

Domyślnie uprawnienia nie zezwalają na klucz pem. Musisz tylko zmienić uprawnienia:

Chmod 400 xyz.pem

I jeśli instancja ubuntu to Połącz używając:

Ssh - i xyz.pem [email protected]

 2
Author: rahul kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-29 04:25:21

Problemem dla mnie było to, że mój .plik pem znajdował się w jednej z moich partycji NTFS. Przeniosłem go na moją partycję linux (ext4).

Dał wymagane uprawnienia uruchamiając:

chmod 400 my_file.pem

I zadziałało.
 2
Author: Rishabh Agrahari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-25 11:32:31

Cóż, patrząc na twój opis postu czuję, że popełniłeś 2 Błędy: -

  1. Ustaw poprawne uprawnienia dla klucza prywatnego . Poniższe polecenie powinno pomóc w ustawieniu poprawnej permission pliku.

    chmod 0600 mykey.pem

  2. Niewłaściwy użytkownik ec2 próbujesz się zalogować .

    Patrząc na twój dziennik debugowania myślę, że stworzyłeś instancję Amazon linux. Domyślnym użytkownikiem dla tego typu instancji jest ec2-user. Gdyby instancja była ubuntu wtedy domyślnym użytkownikiem byłby ubuntu.

    ssh -i privatekey.pem default_ssh_user@server_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

Źródło: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

 2
Author: Prabuddha Chakraborty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-21 10:15:28

Plik klucza nie powinien być publicznie widoczny, więc użyj uprawnień 400

chmod 400 keyfile.pem

Jeśli powyższe polecenie pokazuje błąd uprawnień użyj

sudo chmod 400 keyfile.pem

Teraz ssh do maszyny ec2, jeśli nadal masz problem, użyj ec2-user

SSH-i keyfile.pem [email protected]

 2
Author: singh30,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-21 10:56:18

Dla mnie to była edycja domyślnej grupy zabezpieczeń, aby umożliwić przychodzący ruch TCP na porcie 22:

Tutaj wpisz opis obrazka

 2
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-24 17:22:28

W windows,

  • Kliknij prawym przyciskiem myszy plik pem. Następnie wybierz Właściwości.
  • Wybierz zakładkę Bezpieczeństwo -- > kliknij Edytuj -- > Usuń wszystkich innych użytkowników z wyjątkiem bieżącego użytkownika
  • wróć do zakładki Bezpieczeństwo -- > kliknij Zaawansowane -- > Wyłącz dziedziczenie
 2
Author: Codemaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-21 10:36:32

Możesz znaleźć odpowiedź z przewodnika ASW. 400 chroni go, czyniąc go tylko do odczytu i tylko dla właściciela.

chmod 400 mykey.pem
 2
Author: SeniorEngineer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-14 01:00:55

Lista kontrolna:

  1. Używasz odpowiedniego klucza prywatnego .plik pem?

  2. Czy jego uprawnienia są ustawione poprawnie? (Mój Amazon-Marka amis działa z 644, ale Red hat musi być co najmniej 600 lub 400. Nie znam się na Ubuntu.)

  3. Czy używasz odpowiedniej 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 usename@hostname" lub "SSH-l username-i pem hostname"

 1
Author: fivedogit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-29 20:06:52

Po prostu zmień uprawnienia pliku pem na 0600 pozwalając tylko na dozwolonego użytkownika i będzie działać jak charm.

sudo chmod 0600 myfile.pem

A następnie spróbuj ssh to będzie działać idealnie.

ssh -i myfile.pem <<ssh_user>>@<<server>>
 1
Author: Prash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-24 03:03:55

To tylko problem z pozwoleniem z kluczem aws pem.

Wystarczy zmienić uprawnienia klucza pem na 400 używając poniższego polecenia.

chmod 400 pemkeyname.pem

Jeśli nie masz uprawnień do zmiany uprawnień pliku, możesz użyć sudo, jak poniżej.

sudo chmod 400 pemkeyname.pem
Mam nadzieję, że będzie dobrze.
 1
Author: Deepak N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 06:38:55

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ź również, czy zalogowałeś się z odpowiednimi poświadczeniami użytkownika. W przeciwnym razie użyj sudo podczas łączenia

Sudo SSH-i {keyfile} ec2-user@{adres ip zdalnego hosta}

 1
Author: Abhijit Barua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-08 05:28:54

Proszę zignorować tę odpowiedź, jeśli jest ona dla Ciebie nieistotna, ale z mojego doświadczenia widziałem ludzi mających problem z Permission denied (publickey) ponieważ po prostu wklejali swój klucz publiczny (na docelowej maszynie) bez pierwszej litery!

Dzieje się tak przy użyciu vim do edycji (wklejenia) klucza. Ponieważ vim domyślnie otwiera się w trybie komend (nie w trybie insert ), wklejenie klucza bez przełączania na tryb insert (tzn. i) spowoduje powoduje pominięcie pierwszej litery s, np. zamiast

ssh-rsa <key>

Kończysz wklejając

sh-rsa <key>

Zanim wypróbujesz inne rozwiązania, Sprawdź czy poprawnie wkleiłeś swój klucz! tj.

cat ~/.ssh/id_rsa.pub

Tylko jeśli jesteś pewien, wykonaj kolejne kroki; próba ssh w trybie werbalnym (tj. flaga -v) może wskazać rzeczywisty problem:

ssh -v -i <private_key> <name>@<ip> -p <port>

Na marginesie, jak to już wspomniano tutaj przez innych, w większości przypadków rozpoczynając pusty ssh agent (program, który przechowuje klucze w pamięci) i dodanie klucza powinno rozwiązać problem:

ssh-agent bash
ssh-add <private_key>
 1
Author: Tomasz Bartkowiak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-08 13:50:13

.400 chroni go, czyniąc go tylko do odczytu i tylko dla właściciela.
Odpowiedź znajdziesz w poradniku ASW.

chmod 400 yourPrivateKey.pem

Tutaj wpisz opis obrazka

 1
Author: Zgpeace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-18 00:09:59

Domyślnie po pobraniu pliku kluczowego ma on 644 uprawnienia.

Więc musisz zmienić uprawnienia za każdym razem, gdy pobierasz nowe klucze.

 chmod 400 my_file.pem
 1
Author: Geralt of Ravia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-09 11:33:52

Poniżej znajdują się proste kroki dla użytkownika Linuksa, aby połączyć się z serwerem za pomocą .plik pem:

Krok 1: Przejdź do lokalizacji pliku pem i skopiuj go do strony głównej .lokalizacja ssh.

cp example.pem ~/.ssh/example.pem

Krok 2: zmiana uprawnień

chmod 400 ~/.ssh/example.pem

Krok 3: Uruchom następujące polecenie

ssh -i ~/.ssh/example.pem [email protected]

Ponieważ to polecenie jest zbyt długie, więc należy utworzyć alias tego za pomocą następujących poleceń:

 vim ~/.bashrc

Zapisz na końcu tę samą komendę w następujący sposób.

alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'

Teraz uruchom ponownie Twój system i użyj sshConnect, aby połączyć się z serwerem.

 0
Author: Ajai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 06:34:14