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

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

My ~/.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только службу), и теперь проблема исчезла: я могу ssh на сервер как обычно.


1
Связанный - unix.stackexchange.com/questions/333728/… - показывает информацию о том, как отключить.
SLM

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

Ответы:


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. Введите ваш пароль. Нажмите Ввод. 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.