Permission Denied при подключении по SSH

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

Добавить комментарий 0