2012-12-09 8 views
24

Kiedy tworzę nowy serwer Amazon EC2, łączę się z nim jak zwykle za pomocą ssh.Sprawdzanie odcisków palców SSH dla serwera Amazon AWS EC2 z ECDSA?

widzę typowy ostrzeżenie:

$ ssh myserver 
The authenticity of host 'ec2-12-34-567-890.compute-1.amazonaws.com (12.34.567.890)'  can't be established. 
ECDSA key fingerprint is 31:66:15:d2:19:41:2b:09:8a:8f:9f:bd:de:c6:ff:07. 
Are you sure you want to continue connecting (yes/no)? 

Jak zweryfikować odcisk palca przed mogę się zalogować?

Idealnie odpowiedź opiera się na czymś innym niż oryginalny dziennik konsoli tworzenia - ponieważ dziennik może zostać przepłukany po ponownym uruchomieniu systemu lub podczas dużego skryptu instalacyjnego systemu, który generuje dużo danych wyjściowych lub połączenie ma starszy system z kluczami, które nie były śledzone w czasie tworzenia.

+0

Jednym ze sposobów jest użycie własnych kluczy ze znanym odciskem palca (patrz: http://serverfault.com/a/581458/86472). Jeśli kontrolujesz instancję (i planujesz scenariusz - tj. Konfigurujesz instancję), pobieranie odcisków palców podczas startu jest łatwe - możesz z niego zrobić to, co chcesz zrobić (np. Opublikuj w S3, Route 53, Cloudwatch, wyślij je e-mailem itp.). Jedną z najłatwiejszych rzeczy jest uruchamianie zadania cron co godzinę, które aktualizuje znacznik instancji (widoczny z poziomu konsoli). – cyberx86

Odpowiedz

24

Jako użytkownika @ joelparkerhenderson odpowiedź obejmuje można zbierać hosta odcisk klucza od początkowego dziennika startu serwera, gdy klucze gospodarza są generowane (przez skrypt cloud-init):

enter image description here

Jeśli nie uda się odebrać klucze w ten sposób możesz je uzyskać, łącząc się z instancją docelową z innej zaufanej instancji w prywatnej sieci Amazon, dzięki czemu nie musisz się martwić o ataki typu "man-in-the-middle".

Gdy na zaufanego przykład (jeden wiesz odciski FOR) terminala, można użyć następujących poleceń do zbierania odcisków palców (172.33.31.199 jest prywatnym IP):

$ ssh-keyscan 172.33.31.199 > ec2key 
$ ssh-keygen -l -f ec2key 
2048 02:fc:a5:ff:97:dd:41:63:bb:88:8b:29:4e:75:23:ed 172.33.31.199 (RSA) 
256 ea:bc:4d:5f:ae:00:48:75:45:ba:97:43:fe:e1:a3:e9 172.33.31.199 (ECDSA) 

Jeśli nie masz innej instancji, którego odciski palców znasz, stwórz nową tymczasową instancję, tylko w celu zebrania kluczy. Najpierw znajdź klucze do nowej tymczasowej instancji, używając jej początkowego dziennika startowego. Połącz się z tymczasową instancją z sieci publicznej. Następnie zbieraj klucze obiektu docelowego, łącząc się z nim z tymczasowej instancji, przez prywatną sieć Amazon. Następnie możesz odrzucić tymczasową instancję.

Przygotowałem Guide for connecting to EC2 instance safely using WinSCP.

+1

Po użyciu tej odpowiedzi (Dzięki!), Moja pierwsza próba (z instancją t2) zakończyła się niepowodzeniem generowania czegokolwiek przy pomocy 'ssh-keyscan'. Okazuje się, że t2s zostało uruchomione w VPC i musiałem użyć instancji innej niż t2, aby uzyskać dostęp do prywatnej sieci Amazon. –

13

Oto dwa rozwiązania, które przydały mi się podczas tworzenia systemu EC2.

Rozwiązanie 1: Użyj deski rozdzielczej Amazon EC2

  • Przejdź do https://console.aws.amazon.com
  • Tap "EC2" link.
  • Puknij „Przypadki” w lewej kolumnie
  • Stuknij nazwę instancji chcesz
  • Naciśnij przycisk wyboru „działania” i wybrać opcję „Get System Log” (aka „Wyjście Konsola”)
  • W konsoli wyjście, powinieneś zobaczyć klucze generowane

Rozwiązanie 2: użyj wiersza polecenia AWS EC2

można użyć komendy aws lub Komenda ec2-get-console-output. Oba są dostępne do pobrania z Amazon.

Aby korzystać z EC2 plik PEM klucz prywatny certyfikatu plik PEM, region i instancję:

ec2-get-console-output \ 
    --private-key pk-ABCDEF1234567890.pem \ 
    --cert cert-ABCDEF1234567890.pem \ 
    --region us-east-1c \ 
    i-e706689a 

Wyjście pokazuje ssh gospodarzem kluczowe odciski palców tak:

ec2: -----BEGIN SSH HOST KEY FINGERPRINTS----- 
ec2: 1024 e0:79:1e:ba:2e:3c:71:87:2c:f5:62:2b:0d:1b:6d:7b [email protected] (DSA) 
ec2: 256 31:66:15:d2:19:41:2b:09:8a:8f:9f:bd:de:c6:ff:07 [email protected] (ECDSA) 
ec2: 2048 ce:ec:3b:d3:34:3f:f3:45:76:81:9e:76:7a:d9:f5:e8 [email protected] (RSA) 
ec2: -----END SSH HOST KEY FINGERPRINTS----- 

Narzędzie aws działa podobnie.

Uwaga: te rozwiązania działają tylko w czasie tworzenia lub gdy można uzyskać dzienniki konsoli. Aby uzyskać szersze rozwiązanie, które działa w dowolnym momencie, zobacz odpowiedź Martina.

+1

Ale działa to tylko dla pierwszego uruchomienia instancji, gdy dziennik zawiera generowanie kluczy. Po ponownym uruchomieniu instancji nie można już znaleźć odcisków palców. W inny sposób? –

+1

@Martin Dobry punkt! Idealnie Amazon może dodać odciski palców jako kolumnę na desce rozdzielczej EC2. Dodam nagrodę do tego pytania, aby zachęcić ludzi do pomocy. – joelparkerhenderson

+1

Dziękuję, że była to ogromna pomoc. AWS to mój pierwszy env ustawiony, więc możliwość dostania się do klawiszy za pomocą desce e2c była znacznie mniej myląca. – ouonomos

Powiązane problemy