Вимкнути StshHostKeyChecking в ssh


14

Я намагаюся підключитися до хоста Linux за допомогою sshта отримати наступну помилку

RSA host key for 10.1.1.20 has changed and you have requested strict checking.

Я хотів би це змінити, але не можу знайти жодну комбінацію варіантів для цього.

Я, певно, встановив StrictHostKeyChecking років тому, але не пам'ятаю як.

Я порадився, man sshякий повідомляє мені, що файл конфігурації для всієї системи є, /etc/ssh/ssh_configа типовий файл конфігурації для кожного користувача ~/.ssh/configне існує.

EDIT Щоб уточнити моє запитання, параметр чітко встановлений. Я намагаюся відкрити

  1. Там, де параметри зберігаються (у мене немає файлів, зазначених на сторінці man, що, здається, є неправильним).
  2. Як змінити параметри.

Я не дивлюся на те, як вирішити проблему, яку я маю (я знаю, що можу редагувати файл знаних_хостів, але це стомлює кожен раз, коли я пробую новий сервер).


Це /etc/ssh_configна моєму.
сборський

@sborsky У мене теж є це (що відрізняється від чоловіка), але всі варіанти коментуються.
Міллівей

Це означає за замовчуванням, що відповідно до сторінки man ask. Коли ключ хоста зміниться, ssh-клієнт не підключиться, якщо StrictHostKeyCheckingне встановлено значення no. Якщо ключ хоста змінюється не дуже часто, я б запропонував видалити цей один хост-ключ із вашого ~/.ssh/known_hostsзамість зміни конфігурації.
сборський

1
Спочатку ви повинні з'ясувати, чому це було змінено. Якщо ви цього не змінили, це може бути атака MitM, і тоді ви, звичайно, не повинні дозволити цей хост-ключ!
Відображувати ім’я

бічна примітка - після вилучення всіх записів для даного хоста .ssh/known_hostsя продовжував отримувати попередження, поки не виявив порушуючий рядок в іншому файлі, який називається .ssh/known_hosts2. Мабуть, OS X використовує обидва
billynoah

Відповіді:


18

Щоб відключити строгу перевірку хоста в ОС X для поточного користувача, створіть або відредагуйте ~ / .ssh / config та додайте наступні рядки:

Host [IP Address] 
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Типовим прикладом для хостів у вашій локальній мережі може бути:

Host 10.1.1.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Залежно від вашого використання ssh, я не рекомендую відключати сувору перевірку ключів хоста для всіх хостів.

Якщо ви просто хочете видалити запис за 10.1.1.20, відкрийте ~ / .ssh / known_hosts з редактором на ваш вибір і видаліть відповідний рядок "10.1.1.20 ssh-rsa public-key $ "


Також, здається, працює без рядка / dev / null.
John2095

6

Ви можете просто спробувати його як без конфігурації, просто в командному рядку:

ssh -o StrictHostKeyChecking=no hostname

Але я не думаю, що це все, що потрібно. Якщо ви хочете ігнорувати всю перевірку ключем хоста, вам потрібно налаштувати known_hostsфайл, щоб /dev/nullніколи нічого не зберігалося:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostname

або в /etc/ssh_config:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Перший все ще не дозволив мені підключитися, але ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostnameзробив. Я досі не можу знайти, де встановлено StrictHostKeyChecking!
Міллівейс

Він за замовчуванням відповідає "так", тому його не потрібно встановлювати ніде, щоб застосовувати його.
Jakuje

У документації вказується , то по замовчуванням для да
Milliways

вибір як рішення допоможе, якщо це допоможе вирішити вашу проблему;)
Jakuje
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.