Чи є простий спосіб оновити інформацію у відомих_хостях, коли ви знаєте, що ключ хоста змінився?


38

Якщо операційну систему хоста було перевстановлено і її регенерований відкритий ключ відновлюється, вона, звичайно, не вдасться, оскільки новий ключ не відповідає старій.

Чи є простіший спосіб сказати ssh, що ви знаєте, що ключ хоста змінився і ви хочете, щоб він був оновлений. Думаю, що для редагування тексту або чогось на зразок sed виправдано помилок, щоб видалити рядок, що порушує право.


Це повторює питання про суперпользователя . Більш детальну інформацію дивіться там.
Іцц

Відповіді:


59

Використовуйте ssh-keygen -R hostnameдля видалення імені хоста з вашого відомого файлу_hosts. Наступного разу, коли ви підключитесь, новий файл хоста буде доданий до вашого відомого файлу_hosts.


12
TARGET_HOST=[hostname or IP]

# Remove the old key(s) from known_hosts
ssh-keygen -R $TARGET_HOST

# Add the new key(s) to known_hosts (and also hash the hostname/address)
ssh-keyscan -H $TARGET_HOST >> ~/.ssh/known_hosts

Наступного разу підключившись, ви підключитесь, не вимагаючи , Are you sure you want to continue connecting (yes/no)?оскільки ключі вже будуть у known_hostsфайлі.


1
дивіться також StrictHostKeyChecking в ~ / .ssh / config
Jeff Schaller

2
Я б використовував інше ім'я змінної .... HOST знаходиться в деяких оболонках, які дають ваше власне ім’я хоста, тому я вважаю за краще не змінювати його (я знаю, що можна просто вийти з нього, або зробити це з підшару, але все-таки , чому б не thehostзамість цього? чи що-небудь. Змінна ALLCAPS могла зіткнутися із зарезервованою внутрішньою назвою. Невеликі імена не повинні.)
Олів'є Дулак

Ці клавіші у відомих_хостях мають префікс деякі речі, які починаються з | 1 |. Цей матеріал не додається до файлу цим методом, чи я помиляюся? яка різниця тоді, бо те, що повертає ssh-keyscan, не починається з | 1 |
Даніель Ф

1
(@ DanielF +) , якщо ви використовуєте хеш - формат і прийняв ключ (и) в яких sshє окремі записи для імені хоста і його адреса (адреси), так що ви повинні ssh-keygen -R кожен з них , щоб уникнути конфлікту
dave_thompson_085
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.