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