Найважливішою частиною "надійного" додавання ключа до 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
файлу і складіть сценарій, щоб додати цей вміст до відомого файлу хостів.
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
вимкнулися.