SSH: відомий хост з динамічною адресою


9

Мені потрібно підключитися до хоста з динамічною IP-адресою.

Щоразу, коли його IP змінюється, SSH пропонує мені перевірити відбиток пальців:

The authenticity of host '...' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)?

Чи можна було б передати SSH головному відкритому ключу, щоб:

  1. SSH автоматично перевіряє автентичність хоста
  2. Ключ хоста не зберігається у відомому файлі_hosts

Це питання відрізняється від того, як я можу уникнути перевірки хоста SSH для відомих хостів? так що інші питання прагнуть придушити перевірку SSH, а я НЕ хочу , щоб придушити його: Я дійсно хочу , щоб хост аутентифікації тільки з допомогою відкритого ключа хоста (який я знаю, і вона зберігається у файлі) , а не SSH known_hostsфайл.

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

Відповіді:


6

Найкраще рішення (тобто найближче до того, що я хочу), яке я міг би знайти, - це використовувати параметр HostKeyAlias: він використовуватиме ім'я хоста, яке я вказую для доступу known_hosts(а не IP, до якого я підключаюся).

Мені потрібно буде додати відкритий ключ known_hostsхоста до використання заданого імені хоста (наприклад:), myhostа потім підключитися до нього за допомогою:

ssh -o 'HostKeyAlias myhost' ...

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

Примітка для інших: ви можете додати HostKeyAliasзначення конфігурації у свій ~/.ssh/configфайл або навіть у глобальний /etc/ssh/ssh_configфайл.
каель

5

known_hostsФайл не тільки ключ, він також містить ім'я хоста , який використовується для підключення, і , якщо можливо, IP , що відповідає. Ось чому ви бачите помилку, вона порівнює триплет, який він отримує від сервера, з тим, що ви зберігали у відомому файлі знань.

Отже, якщо IP не змінюється, ви можете відключити, CheckHostIPа це означає, що він просто перевірить ім'я хоста та ключ хоста. Якщо вони залишаться незмінними, у вас має бути менше скарг, але ви будете ризикувати, якщо хтось захопить ваш DNS.


1
Дякую за відповідь, я перевіряю це якнайшвидше! Чому це все-таки було б у напрузі? Якщо я знаю відкритий ключ SSH хоста, цього повинно бути достатньо, щоб бути абсолютно безпечним у будь-якому випадку (якщо комусь не вдасться викрасти приватний ключ цього хоста), чи не так?
пеоро

І все одно мені це не дуже подобається, якщо я маю бути чесним. Використовуючи цей прапор, SSH все ще матиме доступ known_hosts. Чому? Не можу сказати "ssh connect до X, відкритим ключем якого є Y"? Чому ні? Хіба це не буде на 100% впевненим.
пеоро

Ідея полягає в тому, що хост-ключ є частиною більшого цілого, і тільки по собі це не є достатньою гарантією, щоб переконатися, що сервер, до якого ви підключаєтеся, все-таки той, до якого ви підключились раніше. Ви повинні бути впевнені, що IP-адреси та записи DNS також збігаються .. пам'ятайте, що це мережева оболонка, тому мережу потрібно перевірити також.
NickW
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.