Самая важная часть «безопасного» добавления ключа в known_hostsфайл - это получение отпечатка ключа у администратора сервера. Отпечаток ключа должен выглядеть примерно так:
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
В случае с GitHub обычно мы не можем напрямую общаться с администратором. Однако они помещают ключ на свои веб-страницы, чтобы мы могли восстановить информацию оттуда.
Ручная установка ключа
1) Возьмите копию ключа с сервера и получите его отпечаток. NB: Сделайте это перед проверкой отпечатка пальца.
$ ssh-keyscan -t rsa github.com | tee github-key-temp | ssh-keygen -lf -
# github.com:22 SSH-2.0-babeld-f3847d63
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
2) Получить копию отпечатка ключа у администратора сервера - в этом случае перейдите на страницу с информацией на github.com
- Перейти на github.com
- Перейдите на страницу справки (в меню справа, если вы вошли в систему; в противном случае внизу главной страницы).
- В разделе « Начало работы » перейдите в раздел « Подключение к GitHub с помощью SSH».
- Перейти к тестированию вашего SSH-соединения
- Скопируйте отпечаток SHA256 с этой страницы в текстовый редактор для дальнейшего использования.
3) Сравните ключи от двух источников
Поместив их непосредственно один над другим в текстовом редакторе, легко увидеть, изменилось ли что-то
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA) #key recovered from github website
2048 SHA256:nThbg6kXUpJ3Gl7E1InsaspRomtxdcArLviKaEsTGY8 github.com (RSA) #key recovered with keyscan
(Обратите внимание, что вторым ключом манипулировали, но он выглядит очень похоже на оригинал - если что-то подобное происходит, вы находитесь под серьезной атакой и должны обратиться к доверенному специалисту по безопасности.)
Если ключи разные, прервите процедуру и свяжитесь с экспертом по безопасности.
4) Если ключи сравниваются правильно, вам следует установить ключ, который вы уже скачали
cat github-key-temp >> ~/.ssh/known_hosts
Или установить для всех пользователей в системе (как root):
cat github-key-temp >> /etc/ssh/ssh_known_hosts
Автоматическая установка ключей
Если вам нужно добавить ключ во время процесса сборки, вам следует выполнить шаги 1-3 описанного выше ручного процесса.
Сделав это, изучите содержимое вашего github-key-tempфайла и создайте скрипт для добавления этого содержимого в ваш известный файл hosts.
if ! grep github.com ~/.ssh/known_hosts > /dev/null
then
echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts
fi
Теперь вы должны избавиться от любых sshкоманд, которые StrictHostKeyCheckingотключены.