Подтвердить что ты не робот

SSH-проверка отпечатка пальца для сервера Amazon AWS EC2 с ECDSA?

Когда я создаю новый сервер Amazon EC2, я подключаюсь к нему с помощью ssh, как обычно.

Я вижу типичное предупреждение:

$ 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)? 

Как проверить отпечаток пальца перед тем, как я войду в систему?

В идеале ответ основан на чем-то, кроме исходного журнала консоли создания, потому что журнал может исчезнуть после перезагрузки системы или во время большой установки системы script, которая генерирует много выходных данных, или соединение к старой системе с ключами, которые не отслеживались во время создания.

4b9b3361

Ответ 1

Как описано в ответах @joelparkerhenderson, вы можете получить отпечаток ключа хоста из журнала начального запуска сервера, когда генерируются ключи хоста (с помощью сценария cloud-init):

enter image description here


Если вам не удастся собрать ключи таким способом, вы можете получить их, подключившись к своему целевому экземпляру из другого доверенного экземпляра в частной сети Amazon, что защитит вас от атак "человек посередине".

На терминале доверенного экземпляра (для которого вы знаете отпечатки пальцев) вы можете использовать следующие команды для сбора отпечатков пальцев (172.33.31.199 - это частный IP-адрес):

$ ssh-keyscan 172.33.31.199 > ec2key
$ ssh-keygen -l -f ec2key
256 SHA256:oZHeiMEPLKetRgd3M5Itgwaqr2zJJH93EvSdx5UoHbQ <ip> (ED25519)
2048 SHA256:8zg105EUFFrPFpVzdfTGsgXnxuSpTiQd85k0uNapUio <ip> (RSA)
256 SHA256:L7UXLw0djE5B9W7ZhvrkYVSTZyi1MEQ2dBaRtpkkUGY <ip> (ECDSA)

Если у вас нет другого экземпляра, чьи отпечатки пальцев вы знаете, создайте новый временный экземпляр просто для того, чтобы собрать ключи. Сначала найдите ключи для нового временного экземпляра, используя его начальный журнал запуска. Подключитесь к временному экземпляру из публичной сети. Затем соберите ключи целевого экземпляра, подключившись к нему из временного экземпляра через частную сеть Amazon. После этого вы можете отказаться от временного экземпляра.


Я подготовил Руководство по безопасному подключению к экземпляру EC2 с помощью WinSCP.

Ответ 2

Вот два решения, которые работали для меня во время создания системы EC2.

Решение 1. Используйте панель управления Amazon EC2

  • Перейдите к https://console.aws.amazon.com
  • Нажмите ссылку "EC2".
  • Нажмите "Экземпляры" в левом столбце
  • Коснитесь имени экземпляра, который вы хотите
  • Нажмите кнопку выбора "Действия" и выберите "Получить системный журнал" (a.k.a. "Консольный выход" )
  • На выходе консоли вы должны увидеть генерируемые ключи.

Решение 2. Используйте командную строку AWS EC2

Вы можете использовать команду aws или ec2-get-console-output. Оба доступны для скачивания с Amazon.

Чтобы использовать файл pem для частного ключа EC2, файл, регион и экземпляр файла сертификата,

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

На выходе отображаются отпечатки пальца хоста ssh следующим образом:

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-----

Инструмент aws работает аналогичным образом.

Примечание. Эти решения работают только во время создания или когда вы можете получить консольные журналы. Для более широкого решения, которое работает в любое время, см. Ответ Мартина.