Ошибка доступа: permission denied publickey в SSH
Ошибка "permission denied publickey" при использовании SSH
Ошибка "permission denied publickey" при использовании SSH может возникать по разным причинам. В этом ответе я объясню, что означает эта ошибка, возможные причины ее возникновения и как ее решить.
SSH (Secure Shell) — это протокол, который обеспечивает защищенное удаленное подключение к серверам. Он используется для удаленного управления серверами, передачи файлов и выполнения команд на удаленных машинах. Чтобы подключиться к удаленному серверу по SSH, мы используем пару ключей — приватный и открытый. Открытый ключ находится на удаленном сервере, а приватный ключ хранится на вашем компьютере.
Ошибка "permission denied publickey" означает, что сервер отклонил ваш публичный ключ и не дал разрешение на подключение. Существует несколько возможных причин, по которым это может произойти:
- Отсутствие публичного ключа на сервере: Если вы никогда не подключались к этому серверу и вам не удалось скопировать свой публичный ключ на его сервер, то вам необходимо добавить публичный ключ на удаленный сервер. Для этого вам нужно скопировать содержимое вашего публичного ключа (обычно это файл с расширением .pub) и добавить его в файл ~/.ssh/authorized_keys на сервере. Это можно сделать с помощью следующей команды:
cat ~/.ssh/id_rsa.pub | ssh user@server 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
- Неправильные права на файлы ключей: SSH требует, чтобы публичный ключ был доступен только для чтения для владельца. Убедитесь, что у вас правильные права доступа к приватному и публичному ключу на вашем локальном компьютере, а также на путь ~/.ssh/authorized_keys на удаленном сервере. Вы можете изменить права доступа с помощью следующих команд:
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
- Неправильная конфигурация SSH сервера: Иногда причина ошибки может быть связана с неправильной конфигурацией SSH сервера. Убедитесь, что на сервере в конфигурационном файле /etc/ssh/sshd_config установлены следующие значения:
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
После внесения изменений в конфигурационный файл, перезапустите службу SSH на сервере с помощью команды:
sudo service ssh restart
Если вы все еще получаете ошибку "permission denied publickey", проверьте еще несколько возможных причин:
- Публичный ключ был поврежден или неправильно скопирован.
- Пароль для приватного ключа был изменен или забыт.
- Настройки брэндмауэра или SELinux препятствуют подключению по SSH.
Ошибки в синтаксисе или неправильном использовании команд также могут привести к данной ошибке. Убедитесь, что правильно указываете имя пользователя и адрес сервера при подключении по SSH.
Ниже приведены примеры кода для добавления публичного ключа на удаленный сервер и изменения прав доступа на файлы ключей на вашем локальном компьютере:
# Добавление публичного ключа на сервер
cat ~/.ssh/id_rsa.pub | ssh user@server 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
# Изменение прав доступа к файлам ключей на локальном компьютере
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
chmod 700 ~/.ssh
В заключение, ошибка "permission denied publickey" при подключении по SSH может быть вызвана несколькими причинами, такими как отсутствие публичного ключа на сервере, неправильные права на файлы ключей или неправильная конфигурация SSH сервера. Проверьте и исправьте эти возможные проблемы, чтобы успешно подключиться к удаленному серверу по SSH.