Я пытаюсь 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 на сервер как обычно.