SSH, аббревиатура от Secure Shell, — это протокол, который широко используется для удаленных подключений к серверам, сетевым устройствам и другим хостам, на которых запущена служба. Он использует пару открытого и закрытого ключей для шифрования трафика между пользователем и удаленным хостом.
При подключении вы можете столкнуться с ошибкой «Permission denied (publickey)». В этой статье постараемся понять причину этой ошибки и способы ее устранения.
Причины ошибки.
Основной причиной этой ошибки чаще всего является неправильная конфигурация файла /etc/ssh/sshd_config, который является файлом конфигурации SSH по умолчанию.
Другая причина — некорректные разрешения для файла authorized_keys в удаленной системе. Этот файл содержит открытые ключи клиентских систем, которым разрешен доступ к серверу по SSH.
Давайте определим и исправим эти причины.
Включение авторизации по паролю.
Как говорилось ранее, одной из причин этой ошибки является неправильная конфигурация файла /etc/ssh/sshd_config. Одной из проблем, является отключение функции аутентификации по паролю. Если вы использует только аутентификацию на основе ключа SSH, то это с одной стороны правильно. С другой стороны, если по какой-то причине закрытый ключ пропал, то авторизоваться по паролю не удастся.
$ ssh user@10.179.254.41
user@10.179.254.41: Permission denied (publickey).
Чтобы исправить это, необходимо отредактировать файл /etc/ssh/sshd_config любым удобным для вас текстовым редактором. И раскомментировать следующий параметр:
# To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes #PermitEmptyPasswords no
Обратите внимание, параметр PasswordAuthentication должен иметь значение yes.
После изменения, сохраняем файл и перезагружаем службу SSH
$ sudo systemctl restart sshd
Теперь пробуем зайти на удаленный хост
ssh user@10.179.254.41 user@10.179.254.41's password: Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-83-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage ...
Проверяем разрешения для authorized_keys
Иногда ошибка возникает из-за некорректно установленных разрешений и владельцев для файла /.ssh/authorized_keys в удаленной системе.
Файл /.ssh/authorized_keys находится на удаленном сервере. Он содержит открытый ключ SSH от клиентской системы, подключающейся к нему с использованием аутентификации по SSH-ключу. Помните, что закрытый ключ должен оставаться в клиентской системе и никогда не передаваться другим лицам.
Файл authorized_keys должен принадлежать пользователю удаленной системы. Кроме того, у пользователя должны быть права на чтение и запись.
Если это не так, установите разрешения для файла, как показано ниже:
$ ls -lah .ssh/authorized_keys -rw-rw-r-- 1 user user 0 Sep 15 14:10 .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys $ ls -lah .ssh/authorized_keys -rw------- 1 user user 0 Sep 15 14:10 .ssh/authorized_keys
В клиентской системе, необходимо убедиться, что открытый и закрытый ключи имеют правильные разрешения.
- Закрытый ключ должен иметь разрешения на чтение и запись только для владельца файла.
- Открытый ключ должен иметь разрешения на чтение и запись для владельца файла, а также разрешения на чтение для группы и для других пользователей.
Если это не так, настройте разрешения следующим образом:
$ sudo chmod 600 ~/.ssh/id_rsa $ sudo chmod 644 ~/.ssh/id_rsa.pub
Заключение.
Это два основных способа устранения ошибки «Permission denied». Если упустили что-то еще, то дайте знать в разделе комментариев.
Was this helpful?
0 / 0