Как работает SSH-аутентификация?

Как работает SSH-аутентификация?

Мой вопрос основан на таком сценарии: serverA, serverB, user1, и user2. Оба пользователя присутствуют на обоих серверах.

user1on serverAсгенерировал пары ключей SSH и скопировал открытый ключ в authorized_keysфайл on serverB.

user2не serverAгенерирует пары ключей SSH, а также serverB.

user1входит в систему serverA. user1пытается подключиться по SSH к serverB( user2) ssh user2@serverb, и все работает нормально, пароль не запрашивается.

У меня такой вопрос. Как это работает? user2не имеет открытых ключей на serverB. Я всегда думал, что SSH аутентифицирует пользователя, пытающегося войти. Означает ли это, что SSH на serverBаутентифицирует текущего вошедшего в систему user1на serverA?

решение1

Это звучит совсем не так. Вы используете OpenSSH? Или какую-то другую реализацию ssh?

Возвращаясь к вашему вопросу о том, как это работает, все так, как вы и ожидаете (упрощенно):

  • Подключитесь к удаленной системе.
  • Передайте имя пользователя.
  • Удаленная система проверяет существование пользователя и запрашивает ключ, если настроена аутентификация по ключу.
  • Проверяет существование пользователя HOME/.ssh/authorized_keys
  • Проверяет записи в authorized_keys одну за другой, пока одна из них не сработает или пока не останется ни одной.
  • Если соответствующий ключ найден, аутентификация проходит успешно.

Все это основано на ключах в файле ~.ssh/authorized_keys конечного пользователя. Если такого файла/ключа нет, что-то очень сильно сломано.

решение2

В комментариях вы упомянули .rht_authorised key.

Файл авторизованного ключа по умолчанию для каждого пользователя должен быть ~/.ssh/authorized_keysтам, где ~ссылается на домашний каталог пользователя. Если .rht_authorisedон вообще используется, это означает, что используется нестандартная конфигурация OpenSSH.

/etc/ssh/sshd_configможно определить (используя AuthorizedKeysFileключевое слово) другое местоположение (или несколько местоположений) для файла авторизованного ключа: если он определен как абсолютный путь и в определении не используются токены типа %h, %uили , то все пользователи будут использовать один и тот же файл авторизованного ключа.%U

В новых версиях OpenSSH также есть AuthorizedKeysCommandключевое слово, которое определяет программу или скрипт, который будет использоваться для поиска открытых ключей при аутентификации пользователя. Он не используется по умолчанию, но может использоваться в некоторых хостинговых или облачных настройках.

Что grep -i authorizedkeys /etc/ssh/sshd_configсообщает?

Связанный контент