Я пытаюсь 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
, клиент понимает, что он может использовать его сам, почему бы просто не использовать его?
Некоторые дополнительные заметки:
Некоторое время назад (около месяца) такой проблемы не было. С тех пор я не менял никаких конфигурационных файлов ssh. Я сделал обновление установленных пакетов, хотя.
Есть вопрос, который описывает очень похожую проблему, но нет ответа на мой вопрос: ssh не может договориться - не найден подходящий метод обмена ключами
ОБНОВЛЕНИЕ: проблема решена
Как объяснил 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 на сервер как обычно.
Ответы:
Эти
-cbc
алгоритмы оказались уязвимыми для атаки. В результате современные версии OpenSSH теперь будут отклонять эти алгоритмы по умолчанию: на данный момент они все еще доступны, если они вам нужны, но, как вы обнаружили, вы должны явно включить их.Первоначально, когда была обнаружена уязвимость (в конце 2008 года, почти 10 лет назад!), Эти алгоритмы были помещены только в конец списка приоритетов для совместимости, но теперь их устаревание в SSH достигло фазы, на которой эти алгоритмы по умолчанию отключено. Согласно этому вопросу в Cryptography.SE , этот шаг амортизации уже происходил в 2014 году.
Пожалуйста, считайте это мягким напоминанием об обновлении вашего SSH-сервера , если это возможно. (Если это реализация на основе прошивки, проверьте, доступна ли обновленная прошивка для вашего оборудования.)
источник
Вы можете обновить конфигурацию ssh из файла, расположенного по адресу: / etc / ssh / ssh_config
sudo nano /etc/ssh/ssh_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Ctrl + X
. Нажмите Enter, чтобы сохранить и выйти.источник
создайте файл внутри ~ / .ssh / config и вставьте содержимое ниже
источник