Группа DH GEX вне диапазона

Вопрос или проблема

У меня возникла неожиданная проблема с подключением по SSH к моему серверу:

ssh -v --@--
OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips  1 Mar 2016
debug1: Чтение конфигурационных данных /home/paul/.ssh/config
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение опций для *
debug1: Подключение к -- [--] порт 22.
debug1: Соединение установлено.
debug1: файл идентификации /home/paul/.ssh/id_rsa тип 1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_rsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_dsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_dsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_ecdsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_ecdsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_ed25519 тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/paul/.ssh/id_ed25519-cert тип -1
debug1: Включение совместимого режима для протокола 2.0
debug1: Строка локальной версии SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu1
debug1: Версия удаленного протокола 1.99, версия удаленного программного обеспечения OpenSSH_6.6.1p1
debug1: соответствие: OpenSSH_6.6.1p1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Аутентификация к --:22 как 'root'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug1: kex: алгоритм: diffie-hellman-group-exchange-sha1
debug1: kex: алгоритм ключа хоста: ssh-rsa
debug1: kex: шифрование на сервер->клиент: aes128-cbc MAC: hmac-sha1 сжатие: none
debug1: kex: шифрование на клиент->сервер: aes128-cbc MAC: hmac-sha1 сжатие: none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(2048<7680<8192) отправлено
debug1: получено SSH2_MSG_KEX_DH_GEX_GROUP
ssh_dispatch_run_fatal: Соединение к -- порт 22: DH GEX группа вне диапазона

Я подробно изучил этот вопрос SSH: DH_GEX группа вне диапазона, однако он, похоже, не отвечает на это. Я контролирую как клиент, так и сервер, они оба используют обычный OpenSSH и Ubuntu Linux. Нет сторонних компонентов. Ошибка также выглядит немного иначе, она не жалуется на размер бит.

Похоже, вы используете новый клиент OpenSSH (OpenSSH 7.2p2) для подключения к старому серверу OpenSSH (OpenSSH 6.6.1p1). В заметках о выпуске OpenSSH 7.1p2 упоминается:

  • ssh(1), sshd(8): увеличить минимальный размер модуля, поддерживаемый для
    diffie-hellman-group-exchange до 2048 бит.

Судя по сообщению об ошибке, похоже, что это ваш клиент, который отказывается от значения обмена группы DH, представленного _сервером.

Поэтому я задаюсь вопросом, не начались ли “внезапные проблемы” примерно в то время, когда на вашем клиентском компьютере были применены некоторые пакеты/обновления.

Согласно этому посту SecurityExchange, который описывает очень похожую проблему, “решением” может быть a) изменить файл /etc/ssh/moduli на стороне сервера, чтобы сервер не использовал группы DH меньше 2048 бит, или b) обновить сервер до OpenSSH 7.1p2 или новее.

Если вы хотите использовать новый OpenSSH для подключения к устаревшим серверам:

ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -o HostKeyAlgorithms=+ssh-dss my.host.com

Добавьте -v, если хотите увидеть, что происходит, и -o HostKeyAlgorithms=ssh-dss, если это все еще не работает:

ssh -v -o HostKeyAlgorithms=ssh-dss -o KexAlgorithms=diffie-hellman-group14-sha1 my.host.com

Вы также можете, конечно, отредактировать /etc/ssh/ssh_config или ~/.ssh/ssh_config и добавить:

Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.*
    HostKeyAlgorithms ssh-dss
    KexAlgorithms diffie-hellman-group1-sha1    

https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069 упоминает следующее решение для Mikrotik Routerboards:

/ip ssh set strong-crypto=yes

(Замечаю это здесь, потому что этот ответ также появляется в веб-поиске, когда вы ищете похожее сообщение об ошибке.)

Если вы хотите использовать это через Git, не редактируя ваш ssh_config или обновляя SSH сервер:

GIT_SSH="ssh -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=diffie-hellman-group14-sha1" git clone ssh://user@host/path-to-repository

Это проблема с выбранным методом обмена ключами. Вам нужно вручную установить совместимый метод.

Отключение всех методов обмена ключами на клиенте покажет, что предлагает сервер:

ssh -o KexAlgorithms=-"*" example.com

Пример вывода:

нет соответствующего метода обмена ключами. Их предложение: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

Систематически попробуйте каждое предложение:

ssh -o KexAlgorithms="diffie-hellman-group-exchange-sha256" example.com

DH GEX группа вне диапазона

ssh -o KexAlgorithms="diffie-hellman-group-exchange-sha1" example.com

DH GEX группа вне диапазона

ssh -o KexAlgorithms="diffie-hellman-group14-sha1" example.com

[[email protected]] >

В этом случае возникла проблема с первыми двумя, и третий сработал.

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

~/.ssh/config:

Host example.com
    KexAlgorithms diffie-hellman-group14-sha1

Не помещайте KexAlgorithms в секцию Host *, так как это серьезно разрядит безопасность для SSH-сессий с современными устройствами.

Ответ или решение

Проблема, с которой вы столкнулись при подключении к серверу по SSH, связана с использованием алгоритма обмена ключами Diffie-Hellman Group Exchange (DH GEX). Сообщение об ошибке "DH GEX group out of range", указывающее на проблемы с диапазоном группы DH, говорит о том, что клиент OpenSSH 7.2p2 настроен на использование более строгих требований к размерам ключей, чем сервер OpenSSH 6.6.1p1.

Контекст проблемы:
Согласно заметкам о релизе OpenSSH 7.1p2, минимальный размер модуля для обмена ключами Diffie-Hellman в версиях OpenSSH был увеличен до 2048 бит. Это изменение сделано для повышения безопасности соединений. При попытке вашего клиента соединиться с сервером, который, вероятно, не поддерживает такие требования, возникает указанная ошибка.

Причины проблемы:

  1. Несоответствие версий: Версия клиента OpenSSH более новая, чем версия сервера. Сервер может использовать устаревшие алгоритмы и размер ключа, что делает его несовместимым с более строгими требованиями современного клиента.
  2. Настройки конфигурации: Параметры конфигурации на сервере могут быть настроены на использование более низкого размера модуля.
  3. Недавние изменения в инфраструктуре: Как вы упомянули, проблема возникла внезапно, и это может указывать на изменения, которые произошли в системе, например, обновление пакетов.

Решения:
Для устранения этой проблемы вы можете рассмотреть несколько подходов:

  1. Обновление сервера: Наиболее надежный способ — обновить сервер до версии OpenSSH 7.1p2 или более поздней, что позволит ему соответствовать современным требованиям безопасности.

  2. Изменение настроек на сервере:

    • Отредактируйте файл /etc/ssh/moduli на сервере, чтобы установить минимальный размер модуля на 2048 бит или больше. Это позволит серверу предлагать подходящие группы, соответствующие требованиям клиента.
    • Проверьте и при необходимости обновите конфигурацию SSH-сервера, чтобы отключить использование устаревших алгоритмов.
  3. Настройка клиента: Если вы не можете обновить сервер, вы можете временно изменить настройки на клиенте:

    ssh -o KexAlgorithms=diffie-hellman-group14-sha1 user@your_server

    Это позволит клиенту использовать совместимый алгоритм обмена ключами.

  4. Настройка конфигурации SSH: Для удобства вы можете добавить следующие строки в ваш файл конфигурации SSH:

    Host your_server
       KexAlgorithms diffie-hellman-group14-sha1

    Это позволит автоматически использовать указанный алгоритм при каждом соединении с определенным хостом.

Заключение:
Проблема "DH GEX group out of range" часто встречается при взаимодействии между современными и устаревшими версиями OpenSSH. Следование предложенным решениям подскажет вам, как правильно адаптировать вашу инфраструктуру и обеспечить надежное соединение. Не забывайте тестировать изменения в безопасной среде перед их применением в производственной системе, чтобы избежать потенциальных сбоев доступа.

Оцените материал
Добавить комментарий

Капча загружается...