Вы смешиваете аутентификацию сервера с клиентским компьютером и аутентификацию пользователя с сервером.
Проверка подлинности сервера
Одна из первых вещей, которая происходит, когда устанавливается соединение SSH, заключается в том, что сервер отправляет свой открытый ключ клиенту и подтверждает (благодаря криптографии с открытым ключом ) клиенту, что он знает связанный закрытый ключ. Это аутентифицирует сервер: если эта часть протокола успешна, клиент знает, что сервер является тем, кем он притворяется.
Клиент может проверить, что сервер известен, а не какой-то мошеннический сервер, пытающийся выдать себя за правильный. SSH предоставляет только простой механизм проверки легитимности сервера: он запоминает серверы, к которым вы уже подключены, в ~/.ssh/known_hosts
файле на клиентском компьютере (есть также файл всей системы /etc/ssh/known_hosts
). При первом подключении к серверу необходимо проверить каким-либо другим способом, что открытый ключ, представленный сервером, действительно является открытым ключом сервера, к которому вы хотите подключиться. Если у вас есть открытый ключ сервера, к которому вы собираетесь подключиться, вы можете добавить его ~/.ssh/known_hosts
на клиенте вручную.
Аутентификация сервера должна быть выполнена до того, как вы отправите на него какие-либо конфиденциальные данные. В частности, если аутентификация пользователя включает в себя пароль, пароль не должен отправляться на неаутентифицированный сервер.
Аутентификация пользователя
Сервер позволяет удаленному пользователю войти в систему только в том случае, если этот пользователь может доказать, что он имеет право на доступ к этой учетной записи. В зависимости от конфигурации сервера и выбора пользователя, пользователь может предоставить одну из нескольких форм учетных данных (приведенный ниже список не является исчерпывающим).
- Пользователь может предоставить пароль для учетной записи, в которую он пытается войти; Затем сервер проверяет, что пароль правильный.
- Пользователь может представить открытый ключ и доказать, что он обладает закрытым ключом, связанным с этим открытым ключом. Это точно такой же метод, который используется для аутентификации сервера, но теперь пользователь пытается подтвердить свою личность, а сервер проверяет их. Попытка входа в систему принимается, если пользователь подтверждает, что знает закрытый ключ, а открытый ключ находится в списке авторизации учетной записи (
~/.ssh/authorized_keys
на сервере).
- Другой тип метода включает делегирование части работы аутентификации пользователя клиентскому компьютеру. Это происходит в контролируемых средах, таких как предприятия, когда многие машины используют одни и те же учетные записи. Сервер аутентифицирует клиентский компьютер с помощью того же механизма, который используется наоборот, а затем полагается на клиента для аутентификации пользователя.