LinuxСредняя

Как исправить ошибку Permission denied в SSH на Linux

SSH-сервер возвращает ошибку Permission denied из-за неправильных прав доступа или настроек аутентификации. Этот гайд поможет быстро решить проблему и восстановить доступ.

Обновлено 9 апреля 2026 г.
15-25 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 18.04+Debian 9+CentOS 7+Fedora 30+

Как исправить ошибку Permission denied в SSH на Linux

Ошибка Permission denied при подключении по SSH — одна из самых распространенных проблем, с которой сталкиваются пользователи Linux. Эта ошибка может возникнуть по разным причинам: неправильные права доступа к файлам, неверные настройки сервера, проблемы с аутентификацией. В этом гайде мы рассмотрим все возможные причины и решения проблемы.

Введение

SSH (Secure Shell) — это протокол для безопасного удаленного доступа к серверам. Когда вы получаете ошибку Permission denied, это означает, что сервер отказал в доступе по одной из следующих причин: неверные учетные данные, проблемы с правами доступа, неправильные настройки аутентификации или проблемы на стороне сервера.

Требования

Перед началом решения проблемы убедитесь, что:

  • У вас есть доступ к терминалу на клиентской машине
  • Вы знаете имя пользователя и пароль (если используется парольная аутентификация)
  • У вас есть доступ к SSH-ключам (если используется ключей аутентификация)
  • У вас есть права администратора на клиентской машине (для изменения прав доступа)

Шаг 1: Проверить права доступа к SSH-файлам

Первое, что нужно проверить — это права доступа к файлам SSH. Неправильные права могут привести к ошибке Permission denied.

# Проверить права доступа к директории .ssh
ls -la ~/.ssh/

# Правильные права должны быть:
# Директория .ssh: 700 (drwx------)
# Файлы ключей (id_rsa): 600 (-rw-------)
# authorized_keys: 600 (-rw-------)

Если права неправильные, исправьте их:

# Установить правильные права для директории .ssh
chmod 700 ~/.ssh

# Установить правильные права для файлов ключей
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/authorized_keys

Шаг 2: Проверить настройки sshd_config на сервере

Если проблема не в правах доступа, возможно, проблема в настройках SSH-сервера. Подключитесь к серверу (если у вас есть другой способ доступа) и проверьте файл конфигурации:

# Открыть файл sshd_config для редактирования
sudo nano /etc/ssh/sshd_config

# Проверьте следующие параметры:
# PasswordAuthentication yes/no
# PubkeyAuthentication yes/no
# PermitRootLogin yes/no/prohibit-password
# AuthorizedKeysFile .ssh/authorized_keys

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

sudo systemctl restart sshd

Шаг 3: Проверить статус SSH-сервиса

Убедитесь, что SSH-сервер запущен и работает без ошибок:

# Проверить статус SSH-сервиса
sudo systemctl status sshd

# Если сервис не запущен, запустите его
sudo systemctl start sshd

# Проверить ошибки в логах
sudo journalctl -u sshd -f

Шаг 4: Проверить права доступа к директории пользователя

Иногда проблема может быть в правах доступа к домашней директории пользователя. Если права слишком открыты (например, 777), SSH может отказать в доступе:

# Проверить права доступа к домашней директории
ls -ld ~

# Правильные права должны быть: 755 (drwxr-xr-x)

Если права неправильные, исправьте их:

chmod 755 ~

Проверка результата

После выполнения всех шагов попробуйте подключиться к серверу снова:

ssh user@server_ip

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

Возможные проблемы

Проблема: Не работает SSH-ключ

Если вы используете SSH-ключи, но они не работают:

# Добавить ключ в агент аутентификации
ssh-add ~/.ssh/id_rsa

# Проверить, какие ключи добавлены
ssh-add -l

# Проверить соединение с verbose выводом
ssh -v user@server_ip

Проблема: Неправильный пользователь или пароль

Убедитесь, что вы используете правильное имя пользователя и пароль:

# Попробовать подключиться с verbose выводом
ssh -v user@server_ip

# Если забыли пароль, сбросьте его (требует доступ к серверу)
sudo passwd username

Проблема: Брандмауэр блокирует SSH

Убедитесь, что брандмауэр разрешает SSH-соединения:

# Проверить правила iptables
sudo iptables -L

# Разрешить SSH в ufw (Ubuntu/Debian)
sudo ufw allow ssh

# Разрешить SSH в firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Если ни одно из решений не помогло, возможно, проблема в конфигурации сети или на стороне провайдера хостинга. В этом случае обратитесь в техническую поддержку вашего хостинга или провайдера.

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

Почему SSH показывает Permission denied даже с правильным паролем?
Как проверить права доступа к SSH-файлам?
Что делать, если не работает SSH-ключ?

Полезное

Проверить права доступа к SSH-файлам
Проверить настройки sshd_config
Проверить статус SSH-сервиса
Проверить права доступа к директории пользователя