ssh가 협상 할 수 없음-일치하는 키 교환 방법이 없습니다.


32

명령 줄 메일에 문제가있어서 DSL 라우터에 로그인하려고합니다. 라우터를 재구성 할 수 있기를 바랍니다.

ssh명령을 내릴 때 이런 일이 발생합니다.

$ ssh enduser@10.255.252.1

Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

그래서 나는 이 stackexchange post를 보고 내 명령을 이것으로 수정했지만 이번에는 암호로 다른 문제가 발생합니다.

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 enduser@10.255.252.1

Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc

암호화 를 제공 하는 명령이 3des-cbc있습니까? 시스템에 영구적으로 추가할지 여부와 같은 3des에 대해서는 잘 모르겠습니다.

3des-cbc암호 를 허용하는 명령이 있습니까?

여기서 무슨 문제가 있습니까? 비밀번호를 요구하지 않습니다.


1
어쩌면 그것은 이미 여기에
Eduardo Baitello

1
Ssh에는 사용할 수있는 다양한 암호화 알고리즘이 있으며 클라이언트와 서버간에 공통적 인 알고리즘은 없습니다. 사용해보십시오 ssh -o KexAlgorithms=diffe-hellman-group-sha1 enduser@10.255.252.1이전, 덜 안전한 알고리즘을 사용하도록 클라이언트를 강제하고, 라우터에 대한 최신 펌웨어가 있는지.
이카루스

1
ssh -vvv ...서버에서 제공하는 모든 키 교환 및 암호 프로토콜이 표시됩니다.
David Foerster

답변:


47

이 특정 오류는 암호화 된 채널을 설정하는 동안 발생합니다. 시스템과 원격 시스템이 하나 이상의 암호를 공유하지 않으면 동의 할 암호가없고 암호화 된 채널이 불가능합니다. 일반적으로 SSH 서버는 서로 다른 클라이언트를 수용하기 위해 소수의 서로 다른 암호를 제공합니다. 왜 서버가 3DES-CBC 만 허용하도록 구성되어 있는지 잘 모르겠습니다.

이제 3DES-CBC는 끔찍하지 않습니다. 속도가 느리고 다른 알고리즘 보다 보안 성 이 떨어지지 만 키를 올바르게 선택하면 즉시 깨지지 않습니다. CBC 자체에는 암호문을 전송 중에 수정할 수있는 경우 몇 가지 문제 가 있지만 SSH의 HMAC에 의해 결과 손상이 거부되어 영향을 줄이게 될 것입니다. 결론적으로, 3DES-CBC보다 더 나쁜 선택이 있으며 더 나은 선택이 있습니다. 그러나 암호 및 키 교환 알고리즘 선택 사항을 포함하여 보안 관련 기본값을 재정의 할 때는 항상주의해야합니다.이러한 기본값은 이유의 기본값입니다. 일부 똑똑한 사람들은 옵션을 고려하여 뇌의 힘을 소비했으며 기본값으로 선택된 것이 최상의 전체 보안 대 성능 균형을 제공한다고 결정했습니다.

알다시피 -c ...(또는 -oCiphers=...)를 사용하여 클라이언트 측에서 제공 할 암호를 지정할 수 있습니다 . 이 경우 추가 -c 3des-cbc는 클라이언트에서 3DES-CBC 만 허용합니다. 이는 서버가 제공하는 암호와 일치하므로 암호화 된 채널을 설정하고 연결이 인증 단계로 진행됩니다.

당신은 또한 당신의 개인에 추가 할 수 있습니다 ~/.ssh/config. 로컬 문제점을 해결하기 위해 글로벌 변경을하지 않으려면 Host스탠자에 넣을 수 있습니다 . 예를 들어 SSH 구성에 현재 (더미 예)라고 표시된 경우 :

Port 9922

기본값 22 대신 글로벌 기본 포트 9922를 지정하면 특수 구성이 필요한 호스트에 호스트 스탠자를 추가하고 기본 경우에 글로벌 호스트 스탠자를 추가 할 수 있습니다. 그것은 다음과 같이 될 것입니다 ...

Host 10.255.252.1
    Ciphers 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
Host *
    Port 9922

들여 쓰기는 선택 사항이지만 가독성을 크게 향상시킵니다. 빈 줄과로 시작하는 줄 #은 무시됩니다.

해당 시스템에서 항상 동일한 사용자로 로그인하는 경우 해당 사용자 이름을 지정할 수도 있습니다.

Host 10.255.252.1
    Ciphers 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
    User enduser
Host *
    Port 9922

Host *~ / .ssh / config에 아무것도없는 경우 스탠자 를 추가 할 필요 가 없습니다.이 경우 컴파일 된 또는 시스템 전체 기본값 (일반적으로 / etc / ssh / ssh_config) 만 익숙한.

이 시점에서이 호스트에 연결하기위한 ssh 명령 행은 간단히

$ ssh 10.255.252.1

시스템의 다른 모든 사용자 및 시스템의 다른 모든 호스트에 대한 연결은 변경 사항의 영향을받지 않습니다.


내 경우에는 Cipher줄 을 제거해야 했지만 제대로 작동했습니다! 감사!
carlspring 2016 년

ssh_config를 man 페이지 (에 따르면 링크 )를 암호에 대한 설정 파일 구문은 "암호이다 "(후행들에주의).
MikeV

28

Ok 맨 페이지를 읽고 알아 냈습니다.

구성 파일을 수정하고 싶지 않아서 맨 페이지에서 "cipher"라는 용어를 검색하여 -c옵션을 표시했습니다. 이를 통해 암호화 유형을 지정할 수 있습니다. 마지막 명령은 다음과 같습니다.

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc enduser@10.255.252.1

4
암호를 손으로 선택할 때는주의해야합니다. 자신이하는 일을 알지 못하면 약한 것을 선택할 수 있습니다 (사용성 등).
heemayl

Ditto @heemayl. 3DES-CBC는 그다지 나쁘지 않지만 적어도 최신 버전의 OpenSSH에서 지원하는 암호가 모든 의도와 목적을 위해 완전히 손상되었습니다. 조심스럽게 밟으십시오.
CVn

3

최근에 PuTTY를 사용하여 최신 버전의 Ubuntu에 연결하는 데이 문제가 발생했습니다. 이전 버전의 PuTTY에는 업데이트 된 암호가 없었습니다. 따라서 최신 버전의 PuTTY를 다운로드하면 문제가 해결되었습니다. 다른 해결책이 될 수 있습니다.


1
종종 라우터가 최신 상태로 유지되지 않거나 제조업체가 잘 지원하지는 않습니다.
Guy

0

MacOSX 및 CLI 통신에 대한 또 다른 대답 (예 : SFTP) :이 기사 ( http://www.openssh.com/legacy.html(OpenSSL 레거시 옵션))를 참조하십시오 . 이 기사의 정보, 특히 "~ / .ssh / config"파일의 구성 매개 변수 설정으로 해결 된 "협상 할 수 없음"이라는 일관된 오류가 발생했습니다.

BTW, 내 관리 대상이 아닌 대상 SFTP 서버가 TLS 1.0 (SSL 암호화 옵션)을 마지막으로 끄고 TLS 1.1 또는 1.2가 필요할 때이 오류가 발생했습니다.

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