ssh Неможливо домовитись: "не знайдено відповідного шифру", відхиляє cbc


23

Я намагаюся перенести ssh на віддалену машину, спроба не вдається:

$ ssh -vvv admin@192.168.100.14
OpenSSH_7.7p1, OpenSSL 1.0.2o  27 Mar 2018
.....
debug2: ciphers ctos: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: ciphers stoc: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos: 
debug2: languages stoc:
debug2: first_kex_follows 0 
debug2: reserved 0 
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
Unable to negotiate with 192.168.100.14 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

Наскільки я розумію , останній рядок журналу, пропозиції сервера використовувати один з наступних 4 -х алгоритмів шифрування: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc. Схоже, мій ssh-клієнт не підтримує жодного з них, тому сервер і клієнт не в змозі далі домовлятися.

Але мій клієнт підтримує всі запропоновані алгоритми:

$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.

І якщо я чітко вказати такий алгоритм:

ssh -vvv -c aes256-cbc admin@192.168.100.14

Я можу успішно увійти на сервер.

Моя ~/.ssh/configне містить жодних директив, що стосуються шифрів (фактично я її повністю видалив, але проблема залишається).

Отже, чому клієнт і сервер не можуть вирішити, який шифр використовувати без моїх чітких інструкцій? Клієнт розуміє, що сервер підтримує aes256-cbc, клієнт розуміє, що він може сам ним користуватися, чому б просто не використовувати його?

Деякі додаткові примітки:

ОНОВЛЕННЯ: проблема вирішена

Як пояснив telcoM, проблема полягає у сервері: він пропонує лише застарілі алгоритми шифрування. Я був впевнений, що і клієнт, і сервер не застаріли. Я зайшов у сервер (до речі, це Synology, оновлений до останньої доступної версії), і вивчив /etc/ssh/sshd_config. Перший (!) Рядок цього файлу:

Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

Це дуже дивно (той факт, що рядок є першим у файлі), я впевнений, що раніше жодного разу не торкався цього файлу. Однак я змінив рядок на:

Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

перезапустив сервер (не зрозумів, як перезапустити sshdсервіс лише), і тепер проблема відсутня: я можу сш на сервер як завжди.


1
Пов'язане - unix.stackexchange.com/questions/333728/… - показує інформацію про те, як відключити.
slm

3
У мене була та сама проблема, і я виявив, що ви можете легко змінити це у веб-інтерфейсі (оскільки ssh не працював для мене ...), але перейдіть до "Термінал -> розширені налаштування" на панелі керування DSM та виберіть "високий" профіль - мені чомусь було ввімкнено ручний вибір ... Я впевнений, що це щось я зробив і забув, а не те, що було зроблено попереднім оновленням DSM! - зараз вибір є aes128-ctr, aes128-gcm, aes192 *, aes256 *, dhge-sha256, curve25519-sha256, hmac-sha2-256
Zak

Відповіді:


17

Ці -cbcалгоритми виявилися уразливими для атаки. Як результат, сучасні версії OpenSSH тепер відхилять ці алгоритми за замовчуванням: поки вони все ще доступні, якщо вони вам потрібні, але, як ви виявили, ви повинні їх чітко включити.

Спочатку, коли було виявлено вразливість (наприкінці 2008 р., Майже 10 років тому!), Ці алгоритми були розміщені лише в кінці списку пріоритетів заради сумісності, але тепер їх знесилення в SSH досягло фази, коли ці алгоритми є за умовчанням вимкнено Відповідно до цього питання в Cryptography.SE , цей крок знецінення вже відбувся в 2014 році.

Будь ласка, розгляньте це ніжне нагадування про оновлення вашого SSH-сервера , якщо це можливо. (Якщо це вбудована вбудована програма, перевірте, чи наявна оновлена ​​вбудована програма для вашого обладнання.)


3

Ви можете оновити конфігурацію ssh з файлу, розташованого за адресою: / etc / ssh / ssh_config

  1. Запустіть термінал.
  2. Вставте рядок у термінал: sudo nano /etc/ssh/ssh_config
  3. Введіть ваш пароль. Натисніть Enter. Відобразиться файл конфігурації SSH.
  4. Скасувати коментар до рядка: Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
  5. Натисніть Ctrl + X. Натисніть Enter, щоб зберегти та вийти.

1

створити файл всередині ~ / .ssh / config та вставити нижче вмісту

Host *
  SendEnv LANG LC_*
  Ciphers +aes256-cbc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.