Dostęp AWS ssh „Odmowa dostępu (publickey)” [zamknięty]

284

Jak połączyć się z instancją AWS przez ssh?

Mam:

  1. Zarejestrowany w AWS;
  2. Utworzono klucz publiczny i certyfikat na stronie internetowej AWS i zapisano je na dysku;
  3. Poszedłem do mojej konsoli i utworzyłem zmienne środowiskowe:

    $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    
  4. Powiedział AWS API, aby używał tej pary kluczy i zapisał parę kluczy do pliku:

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. Uruchomiono instancję AWS Ubuntu 9 za pomocą tej pary kluczy:

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. Próbowano ustanowić połączenie ssh z instancją:

    $ ssh -v -i ec2-keypair.pem [email protected]
    OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Applying options for *
    debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
    debug1: Connection established.
    debug1: identity file ec2-keypair.pem type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-cbc hmac-md5 none
    debug1: kex: client->server aes128-cbc hmac-md5 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug1: Host 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key.
    debug1: Found key in /home/default/.ssh/known_hosts:11
    debug1: ssh_rsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: ec2-keypair.pem
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

    Co może być problemem i jak to zrobić?

Alex
źródło
2
Ironiczne jest to, że używam „root” jako nazwy użytkownika, ale „ubuntu” (o czym wspomniałeś) to właściwa nazwa dla mojego AMI i dziękuję za twój post!
realjin

Odpowiedzi:

512

W przypadku instancji Ubuntu:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem [email protected]

W innych przypadkach może być konieczne użycie ec2-userzamiast ubuntu.

Większość używanych przeze mnie obrazów EC2 Linux ma domyślnie utworzonego użytkownika root.

Zobacz także: http://www.youtube.com/watch?v=WBro0TEAd7g

sipwiz
źródło
6
Rządzisz! Tak cholernie proste!
Alex
50
Możesz także użyć ssh-add ec2-keypair.pem, aby upuścić opcję -i
AdamK
12
jeśli spróbujesz rootować i zobaczysz „Zaloguj się jako użytkownik ec2-użytkownik zamiast root”. ”użyj ec2-user zamiast root.
Tony
8
Niektóre obrazy Ubuntu wydają się mieć tylko użytkownika „ubuntu”. (Które może sudo zrootować.)
Umowa prof. Falkena została naruszona
1
Super, bardzo przydatne.
NSCoder
93

Teraz jest:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]
SSH
źródło
Dzięki. Zajęło mi to całe wieki, aby się tego dowiedzieć - nie wspomniano o tym w informacjach o połączeniu z konsoli! Mówi ci, kiedy próbujesz użyć roota, ale myślałem, że ec2-user jest odniesieniem do mojej nazwy użytkownika. Doh!
Adrian Mouat,
1
O stary. Niełatwy smakołyk do znalezienia. Dzięki!
vroomfondel
dzięki, nie jest łatwo znaleźć ten
Bardzo dobrze! Dziękuję Ci!
viana
46

Wersje Canonical domyślnie używają użytkownika „ubuntu” dla każdego, kto ląduje tutaj z obrazem ubuntu, który ma ten sam problem.

bryon
źródło
2
Niełatwo go znaleźć.
Gustav
17

Jeśli używasz obrazu Bitnami, zaloguj się jako „bitnami”.

Wydaje się oczywiste, ale coś przeoczyłem.

akim
źródło
Twoja odpowiedź uratowała mi dzień!
Surya
2
Miałeś na myśli? Seems <sarcasm>obvious</sarcasm>
Bob Stein,
Instrukcje Bitnami , w tym jak znaleźć hasła do bazy danych.
Bob Stein,
8

W przypadku moich obrazów ubuntu jest to właściwie użytkownik ubuntu, a NIE użytkownik ec2;)

Dean Hiller
źródło
5

Ubuntu 10.04 z openSSH

jest to dokładne użycie:

ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]

na przykład:

ssh -v -i GSG_Keypair.pem [email protected]

powyższy przykład wzięto bezpośrednio z samouczka AWS dotyczącego łączenia się z komputerem z systemem Linux / UNIX pod adresem : http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/

Carl Crott
źródło
Za pomocą przełącznika ssh -i możemy używać tylko pliku .pem.
ABHAY JOHRI,
5

Będzie również narzekać, jeśli uprawnienia do pliku pem są zbyt otwarte. chmod plik do 600, aby to naprawić.

Allan Bogh
źródło
Dzięki za tę wskazówkę - bardzo mi pomogła
Billy Moon,
4
W przypadku nowicjuszy, polecenie to:chmod 600 your_file.pem
dano
5

Na to też wpadałem - okazało się, że korzystałem z AMI utworzonego przez społeczność - a domyślną nazwą użytkownika był nie root, ani ect-user ani ubuntu. W rzeczywistości nie miałem pojęcia, co to jest - dopóki nie spróbowałem „ rootowania ”, a serwer uprzejmie poprosił mnie o zalogowanie się jako xxx, gdzie xxx jest tym, co ci mówi.

-Twoje zdrowie!

kevinfoundananswwer
źródło
4

Musisz mieć swój klucz prywatny na swoim komputerze lokalnym

Musisz znać adres IP lub nazwę DNS swojego zdalnego komputera lub serwera, możesz to uzyskać z konsoli AWS

Jeśli jesteś użytkownikiem Linuksa

  • Upewnij się, że uprawnienia do klucza prywatnego wynoszą 600 ( chmod 600 <path to private key file>)
  • Połącz się ze swoim komputerem za pomocą ssh ( ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>)

Jeśli jesteś użytkownikiem systemu Windows

Vinena Guna
źródło
Zmień uprawnienia do pliku za pomocą chmod 400 <klucz pem>
Vaibhav Jain
3

posługiwać się...

# chmod 400 ec2-keypair.pem

nie używaj uprawnienia 600, w przeciwnym razie możesz przypadkowo zastąpić swój klucz.

x1b2j
źródło
2

to działało dla mnie:

ssh-keygen -R <server_IP>

do usuwania starych kluczy przechowywanych na stacji roboczej działa również zamiast

potem powtórzenie tego samego ssh zadziałało:

ssh -v -i <your_pem_file> ubuntu@<server_IP>

w instancjach ubuntu nazwa użytkownika to: ubuntu w Amazon Linux AMI nazwa użytkownika to: ec2-user

Nie musiałem ponownie tworzyć instancji z obrazu.

Cris
źródło
2

W przypadku instancji Debian EC2 użytkownikiem jest admin.

Alastair Irvine
źródło
2

Do połączenia są 2 kroki:

Chmod 400 na twoim kluczu prywatnym, tak jak inni nie mogą uzyskać dostępu do twojego klucza:

chmod 400 toto.pem

Aby połączyć się z instancją w SSH, musisz znać publiczny adres IP swojej instancji:

ssh -i toto.pem [email protected]

Mam nadzieję, że to pomoże !

GuillaumeAgis
źródło
1

Jeśli używasz EBS, możesz także spróbować zamontować wolumin EBS na działającej instancji. Następnie zamontuj go na działającej instancji i zobacz, co się dzieje w / home. Możesz zobaczyć takie rzeczy, jak użytkownik ubuntu lub użytkownik ec2? czy ma odpowiednie klucze publiczne w ~ / .ssh / uprawnione_ klucze

Rico
źródło
1

Pozwolenie ec2-keypair.pempowinno być400

chmod 400 ec2-keypair.pem

Jog
źródło
1

Jeśli korzystasz z obrazu AWS z Bitnami. Nazwą użytkownika będzie bitnami. Twoje zdrowie!

zobacz mój debugowanie i spójrz na ostatni:

*

ssh -v -i awsliferaysrta.pem.txt [email protected].***
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22.
debug1: Connection established.
debug1: identity file awsliferaysrta.pem.txt type -1
debug1: identity file awsliferaysrta.pem.txt-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f
debug1: Host '54.254.250.***' is known and matches the RSA host key.
debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: awsliferaysrta.pem.txt
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 54.254.250.*** ([54.254.250.***]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Forced command.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Please login as the user "bitnami" rather than the user "root".

*

Hung Do
źródło
1

W moim przypadku (Mac OS X) problemem był typ podziału pliku. Spróbuj tego:

1. - Otwórz plik .pem za pomocą TextWrangler

2. - Na dole aplikacji sprawdź, czy typem podziału jest „Windows (CRLF)”.

pmartinezd
źródło
1

Jego użytkownik ec2 dla AMI Amazon Linux i Ubuntu dla obrazów Ubuntu. Ponadto RHEL 6.4 i nowszy ec2-user RHEL 6.3 i wcześniejszy root root Fedory ec2-user Centos root

Amith Ajith
źródło
0

Właśnie dodałem do tej listy. Dziś rano miałem problem z nowym użytkownikiem dodanym właśnie do instancji AWS EC2. Aby przejść do sedna, problemem był selinux (który był w trybie wymuszania ), wraz z faktem, że katalog domowy mojego użytkownika znajdował się na nowym wolumenie dołączonym do EBS. Wydaje mi się, że jakoś selinux nie lubi tego innego tomu. Zajęło mi to trochę czasu, żeby to rozgryźć, kiedy przejrzałem wszystkie inne zwykłe problemy z ssh (/ etc / ssh / sshd_config było w porządku, oczywiście, że hasło nie jest dozwolone, uprawnienia były prawidłowe itp.)

Poprawka?

Na razie (dopóki nie zrozumiem, jak zezwolić użytkownikowi na ssh do innego woluminu, lub w jakiś sposób uczynić go woluminem bona fide home dir):

sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0

Otóż ​​to. Teraz mój nowy użytkownik może się zalogować, używając własnego klucza id_rsa.

Pierre D.
źródło
0

Miałem ten sam problem. Odmowa dostępu (publickey) podczas próby zalogowania się za pomocą „ec2-user” lub „root”.

Przeszukano numer AMI obrazu maszyny i miał on dane logowania SSH bezpośrednio na stronie wiki Debiana.

Mam nadzieję że to pomoże.

Lionel Morrison
źródło