Проверка отпечатков пальцев 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)? 

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

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

2 28

2 ответа:

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

Введите описание изображения здесь

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

Когда на доверенном экземпляре (тот, для которого вы знаете отпечатки пальцев) терминал, вы можете использовать следующие команды для сбора отпечатков пальцев (172.33.31.199 является частным 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)
Если у вас нет другого экземпляра, чьи отпечатки пальцев вы знаете, создайте новый временный экземпляр, просто с целью сбора ключей. Сначала найдите ключи для нового временного экземпляра, используя его начальный журнал запуска. Подключитесь к временному экземпляру из общедоступной сети. Затем соберите ключи целевого экземпляра, подключившись к нему из временного экземпляра, через частный Amazon сеть. После этого вы можете отбросить временный экземпляр.

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

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

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

  • перейти к https://console.aws.amazon.com
  • нажмите ссылку "EC2".
  • нажмите "экземпляры" в левом столбце
  • выберите нужное имя экземпляра
  • Нажмите кнопку выбора "действия" и выберите " получить системный журнал "(он же"вывод консоли")
  • в выводе консоли вы должны увидеть клавиши создается

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

Можно использовать команду aws или команду ec2-get-console-output. Как можно скачать с Amazon.

Чтобы использовать свой ЕС2 закрытый ключ PEM-файл, сертификат PEM-файл, регионе, пример:

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  root@ip-10-243-118-182 (DSA)
ec2: 256 31:66:15:d2:19:41:2b:09:8a:8f:9f:bd:de:c6:ff:07  root@ip-10-243-118-182 (ECDSA)
ec2: 2048 ce:ec:3b:d3:34:3f:f3:45:76:81:9e:76:7a:d9:f5:e8  root@ip-10-243-118-182 (RSA)
ec2: -----END SSH HOST KEY FINGERPRINTS-----

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

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