thumb

Після поновлення SSH до нової версії (7.0), при спробі під’єднатися до мого сервера за допомогою SSH, Я отримую наступне повідомлення:

Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found.
Their offer: diffie-hellman-group1-sha1

Чим викликана ця проблема

У OpenSSH 7.0 алгоритм ключа diffie-hellman-group1-sha1 за замовчуванням виключений, тому що він слабкий і в теорії схильний Logjam атаці. Дивіться сторінку www.openssh.com/legacy.html для отримання додаткової інформації.

Якщо клієнт і сервер не можуть домовитися про взаємне наборі параметрів, то з’єднання не буде встановлено. OpenSSH (7.0 і вище) покаже таке повідомлення про помилку:

Unable to negotiate with host: no matching key exchange method found.
Their offer: diffie-hellman-group1-sha1

У цьому випадку клієнтові і серверу не вдалося узгодити алгоритм обміну ключами, оскільки сервер запропонував тільки один метод diffie-hellman-group1-sha1.

Як це виправити

Кращим рішенням для вирішення цієї ситуації буде оновлення/налаштування сервера для того, щоб не використовувати застарілі алгоритми. Якщо ж це неможливо, то можна змусити клієнта знову включити алгоритм обміну ключами diffie-hellman-group1-sha1 за допомогою -oKexAlgorithms=+diffie-hellman-group1-sha1 опції в командному рядку:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@host

або в файлі ~/.ssh/config:

Host somehost.example.org
    KexAlgorithms +diffie-hellman-group1-sha1