SSH Linux, OpenSSH client/server

После обновления OpenSSH перестали приниматься старые ключи

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

После обновления OpenSSH старый RSA/DSA-ключ или алгоритм подписи больше не принимается. Сначала различите алгоритм ключа пользователя и алгоритм ключа узла, затем мигрируйте на поддерживаемый ключ.

В этой статье
  1. Как распознать проблему и где применимы действия
  2. Возможные причины и диагностические признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить, что проблема действительно устранена
  5. Если результат не получен

#Как распознать проблему и где применимы действия

После обновления OpenSSH старый RSA/DSA-ключ или алгоритм подписи больше не принимается. Сначала различите алгоритм ключа пользователя и алгоритм ключа узла, затем мигрируйте на поддерживаемый ключ. Перед выполнением определите название программы, редакцию Linux и управляющий сервис. Значения примеров в командах не являются готовой конфигурацией вашего устройства.

#Возможные причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Старая подпись пользователяВ ssh -vvv видно отсутствие подходящего алгоритма для предложенного ключаСоздать новый Ed25519-ключ, если сервер поддерживает
Несовместим ключ сервераКлиент пишет no matching host key type foundОбновить ключ хоста на контролируемом сервере
Ключ принят, но файл не авторизованОшибка Permission denied (publickey) без no matchingПроверить authorized_keys, настройки и журнал

#Пошаговая диагностика и исправление

  1. Шаг 1. Сохраните рабочий доступПрежде чем менять ключи, оставьте открытым действующий SSH-сеанс или подготовьте консоль VPS. Не удаляйте старый ключ до успешной проверки нового и не включайте устаревшие алгоритмы глобально.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -V
  1. Шаг 2. Посмотрите точный отказ при согласованииНа клиенте -vvv выводит предлагаемый алгоритм и ответы сервера. Фразы no matching host key type и no mutual signature algorithm относятся к разным этапам.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -vvv -o ConnectTimeout=8 пользователь@server.example.org
  1. Шаг 3. Посмотрите тип старого публичного ключаИспользуйте путь к собственной публичной части. ssh-keygen -lf покажет длину и тип; саму закрытую часть не пересылайте. Если публичного файла нет, ищите текущие настройки IdentityFile.
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh-keygen -lf ~/.ssh/id_rsa.pub
  1. Шаг 4. Создайте новый отдельный ключНа клиенте создайте Ed25519-пару под новым именем, чтобы не перезаписать id_rsa. Подтвердите защитную фразу. Если сервер старый и не поддерживает Ed25519, потребуется его обновление или совместимая конфигурация с администратором.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)С осторожностью
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519_updated -C 'new-ssh-key'

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Шаг 5. Добавьте публичную часть только по доверенному каналуЕсли парольный вход всё ещё работает, ssh-copy-id добавит публичную часть на сервер. Утилита может не быть установлена, тогда владелец сервера должен добавить строку .pub в authorized_keys безопасным способом.
    Linux · Терминал (Bash)С осторожностью
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh-copy-id -i ~/.ssh/id_ed25519_updated.pub пользователь@server.example.org

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Шаг 6. Проверьте именно новый ключИспользуйте IdentitiesOnly=yes, чтобы клиент не перебирал другие ключи ssh-agent. Новый вход должен пройти без ослабления PubkeyAcceptedAlgorithms; если не прошёл, вернитесь к серверному журналу.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -i ~/.ssh/id_ed25519_updated -o IdentitiesOnly=yes пользователь@server.example.org

#Как проверить, что проблема действительно устранена

После успешного входа проверьте работу SFTP/команд под своей учётной записью. Старый ключ удаляйте из authorized_keys только после нескольких успешных проверок и подтверждения, что его не используют автоматические задания.

#Если результат не получен

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

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.