Как исправить ошибку «Отказано в разрешении» (Publickey)

Опубликовано: 2024-01-10
Оглавление
  • Почему это важно
  • Основы безопасного подключения к компьютеру
  • Ключ к замку: открытые ключи
  • Почему происходит эта ошибка?
  • Как это исправить
  • Дополнительные советы, если он все еще не работает
  • Обеспечение бесперебойной работы
  • Часто задаваемые вопросы
  • Другие источники
  • Подведение итогов

Вы когда-нибудь сталкивались с сообщением «Ошибка: разрешение отклонено (публичный ключ)» при использовании компьютера? Это распространенная ошибка, которая обычно возникает во время SSH-соединений, позволяющих компьютерам безопасно общаться друг с другом.

Думайте об этом как о попытке использовать ключ, который не подходит к замку. Когда вы видите эту ошибку, это означает, что у вашего компьютера возникли проблемы с установлением безопасного соединения с другим компьютером, поскольку что-то в настройках безопасности не совпадает.

Как исправить ошибку: Разрешение отклонено (Publickey)

Почему это важно

Безопасные соединения, подобные тем, которые создаются с помощью SSH, подобны частной беседе в шумной комнате. Вы же не хотите, чтобы все это услышали, особенно если вы делитесь секретами или личной информацией, верно? Вот почему исправление этой ошибки так важно.

Он обеспечивает конфиденциальность и безопасность разговоров на вашем компьютере, гарантируя, что конфиденциальная информация, такая как пароли, останется конфиденциальной.

Основы безопасного подключения к компьютеру

Давайте углубимся в то, что такое SSH.

SSH означает Secure Shell, и это особый способ безопасного общения компьютеров друг с другом через Интернет. Представьте себе SSH как специальный частный туннель, соединяющий два компьютера.

Только эти два компьютера могут отправлять друг другу сообщения через этот туннель, защищая их разговор от подслушивания.

Ключ к замку: открытые ключи

Чтобы сделать этот туннель безопасным, SSH использует так называемую «аутентификацию с открытым ключом». Это как специальный пароль, но в виде ключа. У вашего компьютера есть уникальный ключ (называемый открытым ключом), который он использует совместно с другим компьютером.

Думайте об этом как о тайном рукопожатии. Если рукопожатие не соответствует, соединение не произойдет, и тогда вы увидите сообщение «Ошибка: разрешение отклонено (публичный ключ)» .

Почему происходит эта ошибка?

Итак, почему вы видите эту ошибку? Есть несколько распространенных причин:

  1. Ключевые проблемы: иногда ошибка возникает из-за того, что что-то не так с настройкой вашего специального ключа. Возможно, ключ на вашем компьютере не совпадает с ключом на компьютере, с которым вы пытаетесь поговорить. Это все равно, что пытаться вставить квадратный колышек в круглое отверстие – ничего не получится.
  2. Неправильные настройки. В других случаях настройки или разрешения на вашем компьютере могут быть установлены неправильно. Это может помешать вашему компьютеру правильно использовать ключ, например, у вас есть правильный ключ, но вы не можете повернуть его в замке.

Как это исправить

Теперь, когда вы немного понимаете, почему возникает эта ошибка, давайте поговорим о том, как ее исправить. Вот несколько шагов, которым вы можете следовать:

Проверьте разрешения ключа SSH:

Установите правильные разрешения для вашего закрытого ключа.

 chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/autorized_keys

Убедитесь, что ваш открытый ключ находится в ~/.ssh/authorized_keys на сервере. Если нет, добавьте его, используя:

кот ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> ~/.ssh/authorized_keys'.

Отладка SSH-соединения

Запустите ssh -vvv user@hostname , чтобы включить подробный режим и предоставить подробную диагностику соединения.

Проверьте на сервере правильность конфигурации, особенно для PasswordAuthentication и PubkeyAuthentication .

кот и т. д./ssh/sshd_config

Дополнительные решения:

Еще раз проверьте, что вы используете правильное имя пользователя для SSH-соединения.

Перезапустите службу SSH, чтобы обновить соединения.

 sudo systemctl restart sshd

Проверьте порт подключения SSH в файле конфигурации SSH. Обычно значение по умолчанию — 22, но оно может быть изменено.

проверь ssh-порт

Проверьте журналы сервера, например /var/log/auth.log или /var/log/secure, на предмет подробностей об ошибках.

Дополнительные советы, если он все еще не работает

Если вы выполнили эти действия и по-прежнему видите ошибку, попробуйте еще пару вещей:

  1. Режим разговора: включите подробный режим в SSH. Это все равно, что просить компьютер дать вам больше подсказок о том, что происходит не так. Вы делаете это, добавляя -vvv к вашей команде SSH, например ssh -vvv [email protected] . Это даст вам гораздо больше подробностей о том, что происходит, когда вы пытаетесь подключиться.
  2. Проблемы с агентом. Иногда проблема может быть связана с агентом SSH — инструментом, хранящим ваши ключи. Если агент работает неправильно, ваши ключи не будут представлены правильно. Иногда может помочь перезапуск агента SSH.

Обеспечение бесперебойной работы

Чтобы избежать возникновения этой ошибки в будущем, вот несколько советов, которые помогут сохранить все в порядке:

  1. Уход за ключами: обращайтесь с ключами SSH так же, как с ключами от дома. Берегите их и не делитесь ими с другими. Регулярно проверяйте, работают ли они должным образом.
  2. Регулярные проверки. Точно так же, как вы регулярно проверяете свой автомобиль или дом на наличие каких-либо проблем, сделайте то же самое с настройками SSH. Убедитесь, что настройки не изменились неожиданно и что ваши ключи обновлены.

Часто задаваемые вопросы

Как настроить аутентификацию с открытым ключом в SSH?

Чтобы настроить аутентификацию с открытым ключом в SSH, сначала сгенерируйте пару ключей SSH на своем локальном компьютере с помощью такой команды, как ssh-keygen . При этом создается закрытый ключ ( id_rsa ) и открытый ключ ( id_rsa.pub ). Затем скопируйте открытый ключ в файл ~/.ssh/authorized_keys сервера, используя ssh-copy-id user@server_ip . В целях безопасности убедитесь, что файл authorized_keys имеет правильные разрешения (обычно 600). Эта настройка позволяет SSH использовать аутентификацию на основе ключей вместо паролей.

Каковы распространенные причины ошибки «SSH Permission Denied (Publickey)»?

  • К частым причинам этой ошибки относятся:
  • Неправильные разрешения для файлов ключей SSH. Закрытый ключ должен быть доступен для чтения только пользователю (600).
  • Неправильная конфигурация в файлах конфигурации SSH ( sshd_config или ssh_config ).
  • Устаревшее клиентское или серверное программное обеспечение SSH, которое может не поддерживать текущие протоколы аутентификации.
  • Брандмауэр или программное обеспечение безопасности блокируют порты или соединения SSH.
  • Неправильно настройте открытый ключ в authorized_keys или используйте неправильное имя пользователя для SSH-соединения.

Как я могу проверить, правильно ли добавлен мой SSH-ключ на сервер?

Для проверки войдите на сервер и проверьте файл ~/.ssh/authorized_keys . Там должен быть указан ваш открытый ключ. Вы также можете проверить соединение, попытавшись подключиться к серверу по SSH. Если пароль не запрашивается, значит, ключ добавлен правильно.

Почему важно ограничивать права доступа к файлам ключей SSH?

Ограничение разрешений для файлов ключей SSH имеет решающее значение для безопасности. Если другие смогут прочитать ваш закрытый ключ, они потенциально смогут получить доступ к вашим серверам. Хранение закрытого ключа в безопасности гарантирует, что только вы сможете использовать его для аутентификации.

Могут ли изменения в конфигурации SSH сервера привести к ошибкам «Отказано в доступе»?

Да, изменения в файле конфигурации SSH сервера ( etc/ssh/sshd_config ) могут привести к таким ошибкам. Например, если PubkeyAuthentication установлено значение no , сервер не будет принимать аутентификацию с открытым ключом, что приведет к ошибке отказа в доступе.

Что делать, если мой SSH-клиент устарел?

Если ваш SSH-клиент устарел, он может не поддерживать новые методы аутентификации или иметь неисправленные уязвимости безопасности. Важно обновить SSH-клиент до последней версии, доступной для вашей операционной системы.

Как брандмауэры влияют на SSH-соединения?

Брандмауэры могут блокировать соединения SSH, если они настроены на ограничение доступа к порту SSH (по умолчанию — 22). Убедитесь, что ваш брандмауэр разрешает трафик через порт, используемый для SSH, чтобы предотвратить проблемы с подключением.

Другие источники

Как установить Sendmail в Linux 2024 (шаг за шагом)

Основные команды Linux для DevOps (Справочник)

Подведение итогов

В этой статье мы рассмотрели, что вызывает ошибку «Ошибка: разрешение отклонено (публичный ключ)» и как ее исправить. Помните, что эта ошибка подобна ключу, который не подходит к замку — обычно это означает, что что-то не так с тем, как ваши ключи SSH настроены или используются. Выполнив описанные нами шаги, вы сможете решить проблему и вернуться к безопасному общению с другими компьютерами.