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서비스 를 다시 시작하는 방법 만 알지 못했음 ) 이제 문제가 사라졌습니다. 평소처럼 서버에 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
Zak

답변:


16

-cbc알고리즘은 공격에 취약한 것으로 드러났다. 결과적으로 최신 버전의 OpenSSH는 기본적으로 이러한 알고리즘을 거부합니다. 현재로서는 필요한 경우 여전히 사용할 수 있지만 발견 한대로 명시 적으로 활성화해야합니다.

취약점이 처음 발견되었을 때 (2008 년 후반, 거의 10 년 전) 이러한 알고리즘은 호환성을 위해 우선 순위 목록의 맨 끝에 만 배치되었지만 이제는 SSH에서의 사용 중단이 해당 알고리즘이 사용되는 단계에 도달했습니다. 기본적으로 비활성화되어 있습니다. Cryptography.SE 의이 질문에 따르면 이 지원 중단 단계는 2014 년에 이미 발생했습니다.

가능하다면 SSH 서버업데이트 할 것을 상기시켜주십시오 . 펌웨어 기반 구현 인 경우 하드웨어에 업데이트 된 펌웨어가 있는지 확인하십시오.


2

/ etc / ssh / ssh_config 에있는 파일에서 ssh 구성을 업데이트 할 수 있습니다.

  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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.