Я прочитал о настройке ключей SSH в Linux и у меня есть несколько вопросов. Поправьте меня если я ошибаюсь…
Допустим, хост tr-lgto хочет подключиться к хосту tr-mdm с помощью ssh. Если мы хотим быть уверены, что это настоящий tr-mdm, мы генерируем пару ключей в tr-mdm и добавляем открытый ключ в known_hosts
tr-lgto. Если tr-mdm хочет проверить, что это настоящий tr-lgto, то tr-lgto должен сгенерировать пару ключей и добавить открытый ключ в authorized_keys
tr-mdm.
Вопрос 1 : В файле known_hosts нет поля пользователя , только IP-адреса и имена хостов. У tr-mdm может быть много пользователей, каждый со своей .ssh
папкой. Должны ли мы добавить открытый ключ к каждому из known_hosts
файлов?
Вопрос 2 : Я обнаружил, что ssh-keyscan -t rsa tr-mdm
верну открытый ключ tr-mdm. Как узнать, к какому пользователю принадлежит этот ключ? Более того, открытый ключ /root/.ssh/
отличается от того, что возвращает эта команда. Как это может быть?
источник
Ответы:
Вы смешиваете аутентификацию сервера с клиентским компьютером и аутентификацию пользователя с сервером.
Проверка подлинности сервера
Одна из первых вещей, которая происходит, когда устанавливается соединение SSH, заключается в том, что сервер отправляет свой открытый ключ клиенту и подтверждает (благодаря криптографии с открытым ключом ) клиенту, что он знает связанный закрытый ключ. Это аутентифицирует сервер: если эта часть протокола успешна, клиент знает, что сервер является тем, кем он притворяется.
Клиент может проверить, что сервер известен, а не какой-то мошеннический сервер, пытающийся выдать себя за правильный. SSH предоставляет только простой механизм проверки легитимности сервера: он запоминает серверы, к которым вы уже подключены, в
~/.ssh/known_hosts
файле на клиентском компьютере (есть также файл всей системы/etc/ssh/known_hosts
). При первом подключении к серверу необходимо проверить каким-либо другим способом, что открытый ключ, представленный сервером, действительно является открытым ключом сервера, к которому вы хотите подключиться. Если у вас есть открытый ключ сервера, к которому вы собираетесь подключиться, вы можете добавить его~/.ssh/known_hosts
на клиенте вручную.Аутентификация сервера должна быть выполнена до того, как вы отправите на него какие-либо конфиденциальные данные. В частности, если аутентификация пользователя включает в себя пароль, пароль не должен отправляться на неаутентифицированный сервер.
Аутентификация пользователя
Сервер позволяет удаленному пользователю войти в систему только в том случае, если этот пользователь может доказать, что он имеет право на доступ к этой учетной записи. В зависимости от конфигурации сервера и выбора пользователя, пользователь может предоставить одну из нескольких форм учетных данных (приведенный ниже список не является исчерпывающим).
~/.ssh/authorized_keys
на сервере).источник
Мои друзья дали мне ответ. По умолчанию ключ идентифицирует машину, а не пользователя. Поэтому ключи хранятся в / etc / ssh /. Вот почему я получил ключ, отличный от того, который хранится в /root/.ssh
источник