macOS SSH-PDВысокая

Как исправить ошибку SSH Permission denied на macOS: причины и решения

В статье рассматривается ошибка SSH Permission denied на macOS. Вы узнаете основные причины и получите пошаговые инструкции по исправлению.

Обновлено 16 февраля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:macOS 11.0 Big Sur и вышеmacOS 12.0 MontereymacOS 13.0 VenturamacOS 14.0 Sonoma

Что означает ошибка SSH Permission denied

При попытке подключиться к удалённому серверу по SSH на macOS вы видите сообщение:

Permission denied (publickey,password).

Эта ошибка означает, что сервер отклонил вашу попытку аутентификации. SSH пытался использовать несколько методов (сначала публичный ключ, затем пароль), но ни один не succeeded. В результате доступ запрещён.

Ошибка SSH Permission denied не является специфичной для macOS — она возникает на любой платформе. Однако на macOS есть свои нюансы: расположение файлов ключей, работа с Keychain, настройки агента. Данная статья сосредоточена именно на решении проблемы в среде macOS.

Причины возникновения

Ошибка Permission denied обычно вызвана одной из следующих причин:

  1. Неправильные права доступа к файлам SSH-ключей на вашем Mac. Приватный ключ (например, ~/.ssh/id_rsa) должен быть доступен только для чтения владельцем (права 600). Если права более открытые (например, 644), SSH откажется использовать ключ из соображений безопасности.
  2. Отсутствие публичного ключа на сервере. Ваш публичный ключ (id_rsa.pub) не был добавлен в файл ~/.ssh/authorized_keys на удалённом сервере, или добавлен некорректно (например, с переносами строк).
  3. SSH-агент не запущен или не содержит загруженных ключей. На macOS агент (ssh-agent) обычно запускается автоматически, но иногда ключи не загружаются в сеанс, особенно после перезагрузки.
  4. Неверный путь к приватному ключу при подключении. Если ключ лежит в нестандартном месте или имеет другое имя, нужно явно указать его опцией -i.
  5. На сервере отключена аутентификация по ключам. В конфигурации SSH-сервера (/etc/ssh/sshd_config) может быть установлено PubkeyAuthentication no или PasswordAuthentication no (и парольная аутентификация отключена).
  6. Ошибка в имени пользователя. Вы пытаетесь войти под пользователем, у которого нет доступа или неправильно указано имя.
  7. Двухфакторная аутентификация или другие ограничения (например, AllowUsers в конфиге сервера).

Способы решения

Способ 1: Проверка прав доступа к ключам SSH

На macOS права на файлы SSH-ключей должны быть строго ограничены. Откройте Terminal и выполните:

# Проверьте права на папку .ssh
ls -ld ~/.ssh
# Ожидаемый вывод: drwx------  или drwxr-xr-x (но лучше 700)

# Проверьте права на приватный ключ (например, id_rsa)
ls -l ~/.ssh/id_rsa
# Ожидаемый вывод: -rw-------  (600)

# Если права другие, исправьте:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
# Если у вас несколько ключей, исправьте каждый приватный ключ.

⚠️ Важно: Не устанавливайте права 777 или 644 на приватные ключи — SSH откажется их использовать.

После исправления прав попробуйте подключиться снова.

Способ 2: Добавление публичного ключа на сервер

Убедитесь, что ваш публичный ключ присутствует в authorized_keys на сервере.

  1. На вашем Mac скопируйте содержимое публичного ключа:
cat ~/.ssh/id_rsa.pub

Скопируйте весь вывод (начинается с ssh-rsa ...).

  1. На сервере (если у вас уже есть доступ, например, по паролю) откройте или создайте файл:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

Вставьте скопированную строку в конец файла. Сохраните (Ctrl+X, затем Y, Enter).

  1. Установите правильные права:
chmod 600 ~/.ssh/authorized_keys
  1. Попробуйте подключиться снова.

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

Способ 3: Запуск и настройка SSH-агента

macOS использует ssh-agent для хранения ключей в памяти. Проверьте, запущен ли агент и загружены ли ключи:

# Проверить, работает ли агент
echo $SSH_AUTH_SOCK
# Если вывод пустой, агент не запущен в текущей сессии.

# Запустить агент вручную
eval "$(ssh-agent -s)"
# Вывод должен быть: Agent pid 12345

# Добавить ключ (если он не загружен)
ssh-add ~/.ssh/id_rsa
# Если ключ защищён паролем, введите его.

# Проверить список загруженных ключей
ssh-add -l
# Должен показать отпечаток вашего ключа.

Если вы используете SSH-ключ с паролем, чтобы не вводить его каждый раз, добавьте ключ в macOS Keychain:

ssh-add -K ~/.ssh/id_rsa

Флаг -K (заглавная K) сохраняет пароль в Keychain, и ключ будет автоматически загружаться при входе в систему.

После загрузки ключа попробуйте подключиться.

Способ 4: Явное указание ключа при подключении

Если ваш ключ имеет нестандартное имя или расположен в другом месте, укажите его явно:

ssh -i ~/.ssh/ваш_ключ user@host

Например:

ssh -i ~/.ssh/id_ed25519 user@example.com

Также можно добавить настройку в локальный конфиг SSH (~/.ssh/config), чтобы не указывать ключ каждый раз:

Host myserver
    HostName example.com
    User username
    IdentityFile ~/.ssh/id_ed25519

После этого достаточно выполнить ssh myserver.

Способ 5: Проверка конфигурации SSH-сервера

Если у вас есть доступ к серверу (например, через консоль или другой аккаунт), проверьте его настройки:

  1. Откройте файл конфигурации:
sudo nano /etc/ssh/sshd_config
  1. Убедитесь, что установлены следующие параметры:
PubkeyAuthentication yes
PasswordAuthentication yes   # если хотите разрешить пароль (не рекомендуется)
AuthorizedKeysFile .ssh/authorized_keys
  1. Также проверьте, нет ли ограничений для вашего пользователя (директива AllowUsers или DenyUsers).
  2. После изменений перезапустите SSH-демон:
sudo systemsetup -setremotelogin on   # для macOS Server
# или
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

На стандартном macOS (не Server) управление SSH осуществляется через systemsetup или launchctl.

Способ 6: Временное отключение аутентификации по ключу для диагностики

Чтобы понять, в чём именно проблема (ключ или пароль), попробуйте подключиться, отключив использование ключа:

ssh -o PubkeyAuthentication=no user@host

Если подключение по паролю успешно, значит, проблема в ключах (права, отсутствие на сервере, агент). Если и это даёт Permission denied, возможно, на сервере отключена парольная аутентификация (PasswordAuthentication no) или ваш пароль неверен.

Также можно включить подробное логирование SSH, чтобы увидеть, что именно происходит:

ssh -vvv user@host

В выводе ищите строки Offering public key и Authentication failed. Это поможет pinpoint проблему.

Профилактика

Чтобы избежать ошибки SSH Permission denied в будущем:

  1. Всегда соблюдайте права доступа к файлам ~/.ssh и ключам. После генерации ключа (ssh-keygen) система обычно устанавливает правильные права, но при копировании файлов они могут сбиться.
  2. Добавляйте публичные ключи на сервер сразу после генерации. Используйте ssh-copy-id user@host (если установлен) или копируйте вручную.
  3. Используйте SSH-агент и Keychain для автоматической загрузки ключей. На macOS это работает из коробки, но после обновления системы или смены аккаунта может потребоваться перезагрузка агента.
  4. Храните приватные ключи в защищённом месте и никогда не передавайте их третьим лицам.
  5. Регулярно проверяйте конфигурацию сервера после обновлений, особенно если вы администратор.
  6. Используйте конфиг-файл ~/.ssh/config для управления несколькими серверами и ключами. Это уменьшает вероятность ошибки при указании неверного ключа.
  7. Если используете пароль на ключе, убедитесь, что он достаточно стойкий, и рассмотрите использование аппаратных токенов (например, YubiKey) для двухфакторной аутентификации.

Следование этим рекомендациям минимизирует риск возникновения ошибки доступа при работе с SSH на macOS.

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

Почему возникает ошибка 'Permission denied' при подключении по SSH?
Как проверить, какие SSH-ключи загружены в агент?
Можно ли использовать SSH без пароля?
Что делать, если ошибка остаётся после проверки всех настроек?

Полезное

Проверьте права доступа к файлам SSH-ключей
Добавьте публичный ключ на сервер
Запустите и проверьте SSH-агент
Подключитесь с явным указанием ключа
Проверьте настройки SSH-сервера
Временно отключите проверку ключей для диагностики

Эта статья помогла вам решить проблему?