У меня установлена Ubuntu 22.04.1, и я использую аутентификацию по открытому ключу и закрытому ключу для входа в SSH.
Итак, вот шаги, которые я предпринял.
- Сначала я создал пару ключей на своем Mac.
- Затем я зашел на сервер и отредактировал
/etc/ssh/sshd_config
, чтобы добавить новый порт для входа по SSH. - Открыл этот порт в брандмауэре (UFW) и закрыл порт по умолчанию 22.
- Я скопировал
ssh-copy-id -i /path/to/public/key root@host
открытый ключ на сервер. - Затем
/etc/ssh/sshd_config
еще раз, чтобы запретить аутентификацию по паролю - Перезапустил sshd и проверил соединение с root. Соединение работало отлично.
- Я снова включил аутентификацию по паролю и протестировал ssh с одним из моих пользователей sudo (не root), используя user + password через новый порт. Соединение работало просто отлично.
- Я сделал an
ssh-copy-id -i /path/to/public/key user@host
для копирования открытого ключа на сервер в .ssh/authorised_keys для этого конкретного пользователя. Процедура не вернула никаких ошибок и сообщила, что один ключ был скопирован. Я вошел на сервер и дважды проверил файл authorised_keys, и ключ действительно был там. - Затем
/etc/ssh/sshd_config
еще раз, чтобы запретить аутентификацию по паролю - Перезапустил sshd и проверил соединение с пользователем.Вот тут у меня проблемаПользователь не может войти. Когда я пытаюсь, я получаю ошибку:
Permission denied (publickey)
. Когда я снова включаю аутентификацию по паролю, я могу нормально подключиться, но все еще без ключей. Просто стандартное подключение по имени пользователя и паролю.
Пара ключей проверена, так как я использую точно такую же комбинацию для пользователя root. Я хочу отключить Permitrootlogin, но не могу. Есть идеи?
Редактировать: Я последовал совету @Jos и сделал подробный вход с помощью root и один с помощью user. Вот 2 результата. Я отфильтровал всю конфиденциальную информацию и ключи, IP-адреса и т. д. и преобразовал результаты в скриншоты:
и пользователь (который не может подключиться):
Редактировать: @steeldriver предложил сделать namei, чтобы проверить, не слишком ли разрешительны файлы authorized_keys. Вот вывод:
| => namei -l ~/.ssh/authorized_keys
f: /home/spitixorismesiti/.ssh/authorized_keys
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxrwx--- spitixorismesiti spitixorismesiti spitixorismesiti
drwx------ spitixorismesiti spitixorismesiti .ssh
-rw------- spitixorismesiti spitixorismesiti authorized_keys