Jak skonfigurować dostęp SSH do instancji Amazon EC2?

87

Potrzebuję dostępu SSH do instancji Amazon EC2 z systemem Ubuntu 10.4. Mam tylko nazwę użytkownika i hasło Amazon. Jakieś pomysły?

BetaRide
źródło
2
Nie zapomnij uruchomić chmod 400 my_private_key.pem.txt po pobraniu.
Peter Kaminski

Odpowiedzi:

159

Zasadniczo potrzebujesz pliku klucza prywatnego, aby zalogować się do EC2 przez SSH. Wykonaj następujące kroki, aby je utworzyć:

  • Wejdź na https://console.aws.amazon.com/ec2/home i zaloguj się na swoje istniejące konto Amazon.
  • Kliknij „Key Pairs” w LHS lub https://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs .
    • Powinieneś zobaczyć listę wygenerowanych przez Ciebie KLUCZÓW (lub podczas procesu tworzenia EC2).
    • Kliknij „Utwórz parę kluczy”, jeśli nie widzisz żadnego lub zgubiłeś klucz prywatny.
    • Wpisz unikalną nazwę i naciśnij Enter.
    • Pojawi się panel pobierania, w którym możesz zapisać klucz prywatny, zapisz go.
    • Przechowuj go gdzieś z uprawnieniem do pliku „0600”
  • Kliknij „Instances” w LHS lub https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances
    • Powinieneś zobaczyć listę instancji ec2, jeśli nie widzisz żadnej, utwórz ją.
    • Kliknij maszynę EC2 i zanotuj publiczny adres DNS.
  • Otwórz terminal (w systemie Linux) i wpisz następujące polecenie
    • ssh -i /path/to/private-key root@<ec2-public-dns-address>- w najnowszych wydaniach pomijano nazwę użytkownika root, w oparciu o wybraną dystrybucję ec2-userlub ubuntujako nazwę użytkownika.
    • wciśnij Enter
    • Otóż ​​to.
Rakesh Sankar
źródło
6
Prawdopodobnie nie możesz zalogować się jako root bezpośrednio przez ssh. Będziesz musiał użyć konta innego niż root, takiego jak ec2-user, więc
``
4
Kiedy próbowałem się połączyć, powiedział mi, że powinienem użyć ubuntulogowania zamiast root. Najwyraźniej mam instancję serwera ubuntu 12.04.
Wasilij Stavenko
3
Pomyślnie utworzyłem konto SSH, dalej jak przesyłać pliki za pomocą SCP z utworzonym kontem ??? Kiedy próbuję przesłać za pomocą SCP, wyświetla się komunikat „Odmowa pozwolenia (publickey)”.
Ashok KS
5
nadal otrzymuję wiadomość „Odmowa dostępu (publickey)”. Dlaczego?
Kasun Kariyawasam
2
Otrzymujesz komunikat „Odmowa dostępu (publickey)”. może używać Elastic Beanstalk. Jeśli tak, musisz przejść do EB env Config, Security i wybrać nową parę kluczy. Zostaną utworzone nowe instancje EC2, które akceptują klucz. A nazwa użytkownika to ec2-userlub może ubuntu, ale nie root.
Jorge Orpinel,
25
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>

po prostu użyj ubuntuzamiast root. Twój problem zostanie rozwiązany. Twoje zdrowie!

Shaharia Azam
źródło
7

Uwaga: bieżący użytkownik w wersji 13.04 to „ubuntu” ssh -i ./mykey.pem [email protected]

Mainguy
źródło
4

Najpierw musisz utworzyć parę kluczy - zrób to za pomocą konsoli EC2. Następnie użyj swojego klucza prywatnego, aby połączyć się z serwerem ec2-userza pomocą SSH (nazwa użytkownika to ) przy użyciu wybranego klienta SSH.

Po wejściu możesz wydać a, sudo su -aby uzyskać root, jeśli chcesz (uwaga: nie możesz zalogować się bezpośrednio jako root).

Jay Sidri
źródło
4

Jeśli używasz MacOS, powinieneś utworzyć / edytować plik konfiguracyjny SSH (~ / .ssh / config) i umieścić coś takiego:

Host *.amazonaws.com
    User ubuntu
    Port 22
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
    IdentityFile ~/PATH/YOUR_DOWNLOADED_KEY.pem

Następnie, aby połączyć się z dowolną instancją EC2:

ssh MYNAME.amazonaws.com

Nic więcej!

Thomas Decaux
źródło
co, jeśli mam klucz multi-pal dla innego regionu, takiego jak us-east-1.pem i us-west-2.pem
Haseeb
1

Aby skonfigurować Ubuntu na AWS, wykonaj następujące kroki:

  1. Zaloguj się do Amazon Web Services i wybierz EC2 .
  2. Wybierz opcję Uruchom instancję i postępuj zgodnie z instrukcjami kreatora, wybierając odpowiedni obraz (Ubuntu), typ instancji, konfigurując sieć VPC i podsieć, przechowywanie i zezwalając na dostęp SSH w grupach zabezpieczeń . Następnie uruchom .
  3. Po raz pierwszy prawdopodobnie trzeba będzie skonfigurować parę kluczy i przypisać ją do instancji. Możesz także utworzyć parę kluczy w parach kluczy . Po utworzeniu pobierz plik PEM i przechowuj go w bezpiecznym miejscu.
  4. Po uruchomieniu wystąpienia poczekaj, aż zostanie zainicjowane i uruchomione .

Aby uzyskać dostęp do instancji przez SSH, uruchom:

  1. Połącz się z Linuksem, podając plik PEM, np

    ssh -i "file.pem" [email protected]
    

    Upewnij się, że plik PEM ma uprawnienia 600 ( chmod 600 file.pem).

Rozwiązywanie problemów

Jeśli używasz instancji VPC, a Twoja grupa zabezpieczeń jest poprawna (z odpowiednimi regułami) i nadal nie działa, w sekcji VPC sprawdź podsieć, która powinna być podłączona do Twojego VPC (obie używane przez Twoją instancję) i skonfiguruj nowa reguła w tablicy routingu , która ma 0.0.0.0/0jako docelowe i swojej bramy internetowej jako docelowy .

Aby uzyskać więcej informacji, zobacz: Rozwiązywanie problemów z połączeniem z Twoją instancją

Zobacz też: Możliwe przyczyny przekroczenia limitu czasu podczas próby uzyskania dostępu do instancji EC2

kenorb
źródło
1

1) Najpierw chmodw .pem filecelu ograniczenia uprawnień do plików, jak poniżej

chmod 400 my-key-pair.pem

2) Następnie sshza pomocą następujących poleceń bezpośrednio z .sshfolderu

ssh -i my-key-pair.pem [email protected]

Uwaga: - Aby przejść do .sshfolderu. Najpierw naciśnij, Ctrl + Haby wyświetlić wszystkie ukryte pliki, a na konieccd .ssh

WaterRocket8236
źródło
0

Problemem może być brak zalogowania się jako poprawny użytkownik systemu operacyjnego Distro. W przypadku niektórych nowych AMI nazwą użytkownika nie może być „ubuntu”, ale „ec2-user”. Na przykład w przypadku Amazon Linux uważam, że użytkownik to „ec2-user”. Eric Hammond podaje przykłady tutaj: http://alestic.com/2014/01/ec2-ssh-username

Moja sugestia, spróbuj:

ssh -i /path/to/file.pem ec2-user@ec2...

ssh -i /path/to/file.pem ubuntu@ec2...

ssh -i /path/to/file.pem root@ec2...

Jeśli masz niewłaściwy AMI, możesz po prostu całkowicie zrestartować maszynę, aby uzyskać jednolitość między klastrami. Jeśli to jest twój problem, prawdopodobnie będziesz chciał mieć ten sam system operacyjny Distro przynajmniej dla twoich Linux-ów.

Henz
źródło
0

Robienie tego, co jest sugerowane we wszystkich tych odpowiedziach, nie wystarczy. Przy każdym wystąpieniu widać grupę zabezpieczeń. Kiedy uruchamiasz nową instancję, będziesz mieć to ustawienie domyślne. Musisz edytować grupę bezpieczeństwa i dodać do niej port ssh. Później musisz dodać porty 8080, 8443, 80, 443 również wtedy, gdy chcesz hostować swoją witrynę.

SayeedHussain
źródło
0

Zaakceptowałem ofertę AWS dotyczącą użycia domyślnych grup zabezpieczeń, które obejmowały porty „All Trafic”.

I po wielu i wielu próbach połączenia się na mojej nowej instancji ec2 właśnie zdałem sobie sprawę, że powinienem edytować moją używaną grupę zabezpieczeń i ręcznie dodać do przychodzącego i wychodzącego portu 22 (ssh)!

Mam nadzieję, że to pomoże !

Diego Favero
źródło
0

Pierwsza zmiana uprawnień do pliku pem o

chmod 400 path/to/key_pair.pem

Wewnątrz pliku ~ / .ssh / config dodaj następujące wiersze, na górze pliku

Host AWS
     Hostname myserver.com
     User myuser
     IdentityFile path/to/.pem/file
     port 22

Nazwa hosta to adres IP lub łącze serwera, nazwa użytkownika serwera, a plik tożsamości to plik pobierany z AWS podczas tworzenia instancji. Po prostu uruchom następujące polecenie w terminalu

ssh AWS

i ciesz się!

Uwaga : aby przejść do .sshfolderu. Najpierw naciśnij Ctrl + Hw folderze domowym, aby wyświetlić wszystkie ukryte pliki i na konieccd .ssh

Vineet Jain
źródło
0

Upewnij się, że wszystko jest w porządku

  1. klucz prywatny musi mieć uprawnienia 400

  2. Upewnij się, że port 22 jest otwarty dla instancji AWS, do której próbujesz uzyskać dostęp.

  3. ssh -i privatekey.pem [email protected] // XXX.XXX.XXX.XXX = publiczny adres IP Twojej instancji
Rajesh Prasad Yadav
źródło