IT/Unix & Linux

SSH - Unable to negotiate 해결하기

슈다루냥 2019. 8. 5.

안녕하세요. 슈다 입니다.

SSH 사용 시 정상적으로 동작하지 않을 때 확인해 볼 수 있는 방법을 알아보겠습니다.

 

SSH6버전 이하에서 기본적으로 지원하던 key exchange method 등이

SSH7버전 이상에서는 보안강화로 인해 별도의 옵션으로 추가를 해주어야 합니다.

이로 인해 OS버전 업그레이드, SSH버전 업그레이드 등을 하였을 뿐인데 ssh를 이용해 파일 송수신, 서버접속 등이 불가한 현상이 생기게 됩니다.

 

Fix

1. SSH7버전의 config 파일을 열어줍니다.

# vi /etc/ssh/sshd_config

 

2. 아래의 옵션을 파일에 추가한 후 저장합니다. - 값을 추가하는 상세 내용은 아래의 [- error log 확인 후 알고리즘 등록하기 -] 참조

KexAlgorithms +diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1
Ciphers +aes128-cbc,3des-cbc,blowfish-cbc

 

위 옵션에서 "+" 를 입력하지 않으면 KexAlgorithms, Ciphers 의 값을 변경하겠다는 의미로 받아들이게 됩니다.

+ 옵션을 추가하여 기존 알고리즘에 옵션값을 추가하는 형태로 입력되어야 합니다.

 

3. sshd를 재시작 합니다.

Linux : systemctl restart sshd

AIX : stopsrc -s sshd; startsrc -s sshd

 

- error log 확인 후 알고리즘 등록하기 -

ssh로 접속하려는 서버의 syslog 를 확인합니다.

# cat /var/log/syslog (syslog 설정한 파일명에 따라 다름)

[syslog 설정방법 확인하기]

 

아래와 유사한 메세지가 있는지 확인합니다.

Unable to negotiate with IP port Port_Number: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1 [preauth]

Unable to negotiate with IP port Port_Number: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc [preauth]

 

해당 IP의 ssh 알고리즘이 맞지 않아 접속이 되지 않으니, log에 표시된 알고리즘을 /etc/ssh/sshd_config 파일에 추가한 후 sshd를 restart 합니다.

KexAlgorithms +diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1
Ciphers +aes128-cbc,3des-cbc,blowfish-cbc

 

설정 완료 후 서버와 클라이언트 간 ssh 접속 테스트를 하여 정상적으로 ssh가 동작하는지 확인합니다.

반응형