SSH - "협상할 수 없습니다... 일치하는 호스트 키 유형을 찾을 수 없습니다."

SSH - "협상할 수 없습니다... 일치하는 호스트 키 유형을 찾을 수 없습니다."

저는 임베디드 시스템(32비트 ARMel 시스템)에 쉘 서버를 가지고 있습니다. 로그인할 때 다음을 사용합니다.

$ ssh root@ip 
Unable to negotiate with ip port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

다음 옵션을 사용하여 예상되는 비밀번호 유형 중 하나를 제공하려고 했습니다 -c.

$ ssh -c ssh-dss root@ip 
Unknown cipher type 'ssh-dss'

또는:

$ ssh -c ssh-rsa root@ip
Unknown cipher type 'ssh-rsa'

그래서 다음에 무엇을 해야할지 모르겠습니다. 명령을 보낼 수 있는 UART 직렬 콘솔이 있지만 SSH를 사용하고 싶습니다. 서비스가 실행되고 있다는 것은 알지만 로그인하는 방법을 모르겠습니다.

답변1

펌웨어를 더 이상 최신 SSH 표준으로 업그레이드할 수 없는 구형 Cisco 임베디드 시스템에서 이러한 현상이 자주 발생합니다.

호스트 키 알고리즘 외에도 오래된 키 교환 알고리즘 및/또는 암호 사양을 사용해야 할 수도 있습니다.

큰 타격의 예:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1\
 -oHostKeyAlgorithms=+ssh-rsa\
 -oCiphers=+aes256-cbc\
 <user>@asa5505

좋은 소식은 내가 사용하는 OpenSSH가 일반적으로 어떤 알고리즘이나 암호가 제공되는지 알려준다는 것입니다. 그렇지 않으면 많은 시행착오를 거쳐야 할 수도 있습니다.

이렇게 하면 사용 가능한 프로토콜이 OpenSSH에 나열될 수 있습니다.

ssh -Q [ciphers|hostkeyalgorithms|kexalgorithms|...]

고쳐 쓰다: 이 작업을 수행하기 위해 ssh_config를 사용하는 데 많은 관심이 있는 것 같으므로(Bob, Z 등 덕분에) 이 접근 방식의 예를 제공하겠습니다.

############################################
# ~/.ssh/config
Host 'asa5505*'
        KexAlgorithms +diffie-hellman-group1-sha1
        HostKeyAlgorithms +ssh-rsa
        Ciphers +aes128-cbc

이러한 프로토콜은 보안상의 이유로 더 이상 사용되지 않으므로 "호스트" 또는 "일치" 자격을 사용하여 해당 프로토콜이 필요한 레거시 대상에만 사용되도록 기본 사용법을 제한해야 합니다.

마찬가지로 이러한 예외를/etc/ssh/ssh_config또는 아래/etc/ssh/ssh_config.d/현재와 ​​미래의 모든 사용자가 기본적으로 이를 사용하도록 의도하지 않는 한.

자세한 내용은 다음을 참조하세요.

man ssh_config

답변2

이것을 사용해 보세요:

ssh -oHostKeyAlgorithms=+ssh-rsa root@ip

노트:

답변3

또한 자신의 컴퓨터에서 실행 중인 항목에 따라 다릅니다. Arch 또는 Fedora36+(OpenSSL3.0 기반)를 실행 중인 경우 이전 알고리즘은 더 이상 사용되지 않거나 비활성화되었습니다. 이전 서버에 연결하려면 3.0용 SSH 구성에 이 구성을 포함해야 했습니다.

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

답변4

깔끔한 트릭은 현재 작동하고 OpenSSH에서 알고리즘이 제거된 경우 이전 버전과의 호환성에 도움이 될 수 있는 이전 Linux 배포 이미지의 컨테이너를 사용하는 것입니다.

더 많은 오버헤드가 있고(컨테이너를 수십 MB의 비용으로 보관할 수 있음에도 불구하고) 허용될 수도 있고 허용되지 않을 수도 있는 보안 위험(유지관리되지 않는 OpenSSH 버전일 수도 있음)이 있을 수 있습니다.

이것은 제한 사항이 있는 한 줄의 내용입니다.

docker run --rm -it debian:jessie sh -c 'apt-get update && apt install -y --force-yes openssh-client && ssh the_host

관련 정보