Git каже: "Увага! Постійно додається до списку відомих хостів"


192

Кожен раз, коли я використовую git для взаємодії з пультом, наприклад, під час потягування або натискання, мені відображається таке повідомлення:

Попередження: Постійно додано "..." (RSA) до списку відомих хостів.

Як я можу запобігти появі цього дратівливого повідомлення? Це лише роздратування - все функціонує належним чином.


1
Ти справді маєш на увазі кожен раз? Це дає вам підказку форми The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)?, чи це ви придушили? Якщо це так, чи це кожен раз однаковий відбиток пальців? Якщо це не так, це дійсно страшно . Менш страшним варіантом буде те, що якимось чином насправді не вдається записати у файл хостів, тому він намагається повторювати кожен раз. Погляньте ~/.ssh/known_hosts?
Каскабель

1
Так. <i> Кожен раз. Однак я не бачу повідомлення "Ви впевнені ..." - можливо, я його придушив.
Дональд Тейлор

Чи вказується хост у списку ~/.ssh/known_hosts? (Чи перераховано 5000 разів?) Чи ~/.ssh/configіснує / містить щось (особливо значення для StrictHostKeyChecking)?
Каскабель

Хост вказаний у цьому файлі один раз, і це єдиний запис.
Дональд Тейлор

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

Відповіді:


240

Рішення: створити ~/.ssh/configфайл і вставити рядок:

UserKnownHostsFile ~/.ssh/known_hosts

Потім ви побачите повідомлення наступного разу, коли ви отримаєте доступ до Github, але після цього його більше не побачите, оскільки хост додається до known_hosts файл. Це вирішує проблему, а не просто приховує повідомлення журналу.

Ця проблема клопотала мене досить довго. Проблема виникає через те, що клієнт OpenSSH, скомпільований для Windows, не перевіряє файл знаних_хостів~/.ssh/known_hosts

ssh -vvvvvvvvvvvvvvvvvvvv git@github.com

debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.

9
Так, я не вважаю придушення попереджень або помилок належним рішенням проблеми. ;)
Єремія Гоуді

1
нещодавно я зіткнувся з тим же питанням на своїй машині ubuntu. Це почало поводитись так після того, як я використовував інший (за замовчуванням ~/.ssh/id_rsa) ключ для підключення до сервера. Як згадував @JeremiahGowdy, я маю debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null". Чому SSH починає використовувати /dev/nullяк known_hosts після того, як я змінив ключ?
m-ric

6
Чудово працює! Нарешті дурне попередження припинилося. Btw в Windows, ~in ~/.ssh/config- домашня папка користувача. Щоб легко відкрити його, натисніть Win-R , введіть cmd Enter . Командний рядок повинен уже відкритися у вашій домашній папці. Введіть cd .ssh Enter , а потім start . Enter, щоб відкрити папку в Провіднику Windows. Тоді ви можете створити конфігураційний файл у Блокноті (без розширення .txt при збереженні). (Користувачі Pro можуть перегукуватися безпосередньо з новим файлом у командному рядку ;)). Запустіть команду git, що включає віддалений двічі (як git fetch), і ви закінчите.
ADTC

1
чому у вас 20 s для ssh?
bubakazouba

3
@bubakazouba Чим більше v, тим більше деталізований журнал, перевірте документи на це. Трьох вистачить, двадцять - це надмір: D
Петро Манек

90

Додайте наступний рядок до файлу налаштування ssh ($ HOME / .ssh / config):

LogLevel=quiet

Якщо ви запускаєте ssh з командного рядка, додайте наступний параметр до командного рядка:

-o LogLevel=quiet

Наприклад, наступне виводить версію gcc, встановлену на machine.example.org (і без попередження):

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion

1
Додано "LogLevel = silent" у файл "config". Дякую.
Дональд Тейлор

3
Для підтримки безпеки було б добре помістити "LogLevel = тихенький" всередину розділу "Хост".
Джо

39
LogLevel=quietце погана ідея, він хоче, щоб всі помилки відображалися, він просто хоче уникнути цієї конкретної відвертої помилки. Можливо, тому, що він обдурив ssh використовувати /dev/nullяк known_hostsфайл, можливо, тому, що він хотів вимкнути known_hostsперевірку відбитків пальців, але не зміг, тому що ssh overlords не дозволили йому.
Елазар Лейбович

@bukzor loglevel=errorвсе ще відображає "Підключення до <сервера> закрито", коли з'єднання припинено, що також дуже дратує сценаріїв.
Гасс

Я підтримав це, оскільки це насправді не вирішує проблему. Це просто приховує.
алабуді

60

Встановіть LogLevelв ERROR(НЕ QUIET) в ~/.ssh/configфайлі , щоб не бачити ці помилки:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

2
У моєму випадку це найкраще спрацювало - або ви можете вказати "-oLogLevel = ПОМИЛКА" в командному рядку
Бред

5

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


1
Але я підключаюся до неї 10-15 разів щодня, і все одно отримую це попередження.
Дональд Тейлор

@JackB. Подивіться ~/.ssh/known_hostsі перевірте, чи є там ваш господар.
Borealid

Чи змінюється ключ чомусь? Перевірте відбиток у файлі проти відбитка пальця, який виводиться ssh. Також встановлено режим вашого каталогу .ssh на 0700?
Джейсон Каррейро

2
@JasonCarreiro, я великий хлопчик, я знаю, що ніхто не витягне MITM-атаку всередині моєї стійки, безпека є компромісом, і я хочу, щоб нові комп’ютери працювали з коробки за допомогою попереднього ключа, без необхідності керувати ЦА або ssh-keyscan.
Елазар Лейбович

4

Для придушення попереджувальних повідомлень sshможна додати наступні рядки до ~/.ssh/config:

Host *
LogLevel error

Це відключить попередження, але не повідомлення про помилки. Як і в інших налаштуваннях, ~/.ssh/configви можете налаштувати функцію " LogLevelна кожного хоста", якщо ви хочете більш детально керувати.


2

Це в основному означає, що для цього хоста є зміни ~/.ssh/known_hosts, і він не оновлює його автоматично. Тому кожен раз, коли ви отримуєте це попереджувальне повідомлення.

Це часто трапляється для підключення до відтворених віртуальних машин, який змінює ключ з однаковою IP-адресою

Рішення

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

Якщо у вас є кілька записів, ви можете скористатися командою нижче для видалення

$ ssh-keygen -R <hostname>

Це прекрасно працює для мене


0

Якщо ви використовуєте сховище від GitHub, розгляньте натомість використовувати версію URL-адреси HTTPS , щоб повністю усунути цю проблему:

Клацніть кнопку HTTP і клонуйте цю URL-адресу замість цього

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


Примітка. Якщо ви використовуєте автентифікацію приватного ключа, ви не можете використовувати HTTP (S).
qwertzguy

0

У мене те саме питання, і я виявив, що .sshв моєму файлі немає жодного файлу ~. Тому я просто створюю .sshкаталог, який знаходиться під ~контуром, і проблема вирішується.


0

Я потрапив у те саме питання, коли почав користуватися машиною Windows. У моєму випадку це було тому, що моє налаштування SSH не було зроблено. Github має дуже точну документацію щодо налаштування SSH. Після того, як це було усунуто, питання було вирішено.

https://help.github.com/articles/checking-for-existing-ssh-keys/ https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it- до агента-ssh /


0

Додати ключ ssh

ssh-keygen -t rsa -b 4096 -C "abc@abc.com"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/bitbucket_rsa

Конфігураційний файл ящика

crate ~/.ssh/config

додати під рядок.

UserKnownHostsFile ~/.ssh/known_hosts

Потім додайте ключ pub і клонуйте ваше сховище ... Готово .....


0

Я зіткнувся з тією ж помилкою в Linux / Cent OS VM, і це було через те, що IP змінювався після перезавантаження. Щоб вирішити цю проблему, я визначив статичний IP в мережі і додав цей запис у файл / etc / hosts. Для статичного IP відзначте трохи більше значення діапазону. Наприклад, якщо ваш поточний IP (ipconfig / ifconfig) становить 192.168.0.102, наступного разу після перезапуску це може стати 192.168.0.103. Тому визначте свій статичний IP-адрес у налаштуваннях IPV4 як 192.168.0.181, що повинно зробити трюк.


спробуйте виділити ключові слова та будьте зрозумілі з форматом, який допоможе зрозуміти свою відповідь для інших
Agilanbu

0

У моєму випадку це було тому, що адміністратор, який налаштував сервер, встановив ці параметри в ~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Що спрацювало нормально для більшості випадків, не використовуючи ~/.ssh/known_hostsфайл. Але для підприємства gitlab repo кожного разу він давав "Попередження: Постійно додається ... до списку відомих хостів".

Моє рішення було прокоментувати UserKnownHostsFile /dev/nullрядок, який дозволив створити ~/.ssh/known_hosts. Тоді вона більше не давала попереджень.

Також у вас можуть бути старі / невірні записи known_hosts.

# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>

# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>

0

додайте свій приватний ключ до ssh-агента за допомогою:

ssh-add ~/.ssh/id_rsa

-1

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

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