Мой вопрос основан на таком сценарии: serverA
, serverB
, user1
, и user2
. Оба пользователя присутствуют на обоих серверах.
user1
on 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
сообщает?