Понимание файла SSH known_hosts

Файл ssh known_hosts - это файл, в котором хранится открытый ключ всех серверов, к которым вы подключились с помощью ssh. Этот файл используется для проверки идентичности серверов в будущем. Ssh может автоматически добавлять ключи в этот файл, но их можно добавить и вручную.

Понимание SSH known_hosts

В SSH для аутентификации компьютеров и пользователей используется криптография с открытым ключом. Ключи хоста аутентифицируют хосты. Уполномоченные ключи и ключи идентификации аутентифицируют пользователей. В OpenSSH коллекция известных ключей хостов хранится в /etc/ssh/known_hosts и в .ssh/known_hosts в домашнем каталоге каждого пользователя. При первом подключении к хосту ssh обычно добавляет открытый ключ удаленного хоста в файл known_hosts пользователя.

Формат файла known_hosts

Формат представляет собой один открытый ключ или сертификат на одну непрерывную строку. Каждая строка содержит имя хоста, количество битов, экспоненту и модуль. В начале строки находится либо имя хоста, либо хэш, представляющий имя хоста. Можно использовать список хостов, разделенных запятыми, в поле имени хоста, если хост имеет несколько имен или если один и тот же ключ используется на нескольких машинах в пуле серверов.

Вот один из примеров ключа хоста с IP:

Назначение файла known_hosts

Этот файл является локальным для учетной записи пользователя и содержит известные ключи для удаленных хостов. Как и ключи, хранящиеся в файле ~/.ssh/known_hosts, эти ключи используются для проверки "личности" удаленного узла, защищая его от атак типа "человек посередине".

При каждом последующем подключении ключ сравнивается с ключом, предоставленным удаленным сервером.

  • Если ключ совпадает, соединение будет продолжено.
  • Если совпадение не произошло, ssh выдаст сообщение об ошибке.
  • Если для удаленного узла нет ключа, то будет показан отпечаток ключа, и появится возможность автоматически добавить ключ в файл.

Этот файл можно создать и отредактировать вручную, но если он не существует, он будет создан автоматически ssh при первом подключении к удаленному узлу.

Добавление открытого ключа в known_hosts вручную

Мы можем использовать ssh-keygen с опцией -F для поиска файла known_hosts.

По умолчанию будет искаться файл ~/.ssh/known_hosts, и ключ будет напечатан, если он будет найден. С помощью опции -f можно искать в другом файле. Если ключ должен быть удален из файла, опция -R работает аналогично поиску по хосту и затем удаляет его, если он найден, даже если имя хоста хэшировано.

Когда ключ будет удален, он будет добавлен в файл ~/.ssh/known_hosts.old на случай, если он понадобится позже. Если с помощью -F или -R используется файл не по умолчанию, то имя, включая путь, должно быть указано с помощью -f. Но -f необязателен, если используется файл по умолчанию.

Как просмотреть файл ssh known_hosts?

Чтобы просмотреть файл ssh known_hosts в вашей системе Linux, вы можете использовать следующую команду:

или

Чтобы добавить новый хост в файл ssh known_hosts, вы можете использовать следующую команду:

Чтобы удалить хост из файла know hosts, вы можете использовать следующую команду:

Где я должен хранить файл ssh known_hosts?

Файл ssh known_hosts должен храниться в каталоге ~/.ssh. Например, полный путь к файлу ssh known_hosts следующий: ~/.ssh/known_hosts.

Каковы некоторые распространенные проблемы с файлом ssh known_hosts?

Файл ssh known_hosts - это файл, в котором хранится информация о хостах, к которым вы подключились с помощью ssh. Этот файл может помочь предотвратить атаки типа "человек посередине", проверяя ключ хоста перед подключением.

Частая проблема с файлом ssh known_hosts - это когда вы пытаетесь подключиться к хосту и получаете сообщение об ошибке: "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!". Обычно это происходит, если вы поменяли оборудование на сервере, к которому подключаетесь, или если на удаленном сервере изменились настройки.

Если вы получили это сообщение об ошибке, вы можете исправить ее, удалив хост из файла ssh known_hosts и добавив его обратно:

Другая распространенная проблема с файлом ssh known_hosts - это когда вы пытаетесь подключиться к хосту и получаете сообщение об ошибке: "WARNING: POSSIBLE DNS SPOOFING DETECTED!". Обычно это происходит, когда вы пытаетесь подключиться к несуществующему узлу.

Если вы получили это сообщение об ошибке, проверьте файл /etc/hosts и убедитесь, что имя удаленного сервера там есть и ему присвоен действительный IP-адрес.

Понравилась статья? Поделиться с друзьями:
Комментарии: 3
  1. Avatar for mahoune
    mahoune

    У вас по тексту то know_hosts то known_hosts
    Путает неподготовленного читателя.

    1. Avatar for advisor
      Advisor

      Уважаемый пользователь,

      Спасибо за ваше замечание. Мы обязательно исправим это в ближайшее время. Приносим свои извинения за неудобства, которые могли возникнуть из-за этой опечатки.

      Мы стараемся сделать нашу информацию максимально понятной и точной, и мы ценим вашу внимательность к деталям. Ещё раз спасибо за ваш отзыв!

    2. Avatar for Gnostis
      Gnostis (автор)

      Спасибо то обратили внимание на опечатку. Исправил.

Добавить комментарий