Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

PROBLEM DESCRIPTION or QUESTION

...

key exchange 알고리즘 또는 host key 알고리즘이 없다고 나오면서 접속이 안됩니다.

RESOLUTION

...

리눅스의 SSH 서버가 허용하는 알고리즘을 클라이언트 프로그램인 Xshell이 지원하지 못해서 발생하는 문제입니다.

주로 오래된 Xshell 버전으로 비교적 최신 버전의 리눅스에 접속할 때 발생합니다.

또는 Xshell은 해당 OS의 기본 설정 시의 알고리즘을 지원하지만, 서버 관리자가 보안상의 이유 등으로 SSH 서버 설정을 새로 하여 기본 설정에서 지원하던 알고리즘이 배제된 경우일 수 있습니다.

두 가지의 해결책이 있습니다.

1. Xshell을 최신 버전으로 업그레이드하는 방법.

1. 유닉스/리눅스 SSH 서버가 해당 버전의 Xshell이 지원하는 알고리즘을 사용할 수 있도록 설정하는 방법. 

다음은 위 두번째 방법인 SSH 서버의 설정을 변경하는 방법에 대한 안내로서 서버 관리자에게 Xshell 해당 버전에서 지원 가능한 알고리즘을 SSH 서버에도 등록할 수 있도록 요청해야 합니다.

  1. 해당 세션의 추적 기능을 켜고 접속해 보면 Xshell이 해당 세션에서 사용 중인 알고리즘과 서버가 지원하는 알고리즘을 확인합니다.

    Image Addedimage-20241127-034633.pngImage Added

    위 그림 상단의 박스는 Xshell이 지원하는 알고리즘이고 아래는 SSH 서버가 허용하는 알고리즘입니다. 위 그림에서 서로 맞는 알고리즘이 없어 접속이 실패한 경우입니다.

  1. SSH 서버에서 SSH 서버가 지원하고 있는 알고리즘을 확인합니다.

    Code Block
    $ man sshd_config
    ...
         KexAlgorithms
                 Specifies the available KEX (Key Exchange) algorithms.  Multiple algorithms must be comma-
                 separated.  Alternately if the specified list begins with a ‘+’ character, then the specified
                 algorithms will be appended to the default set instead of replacing them.  If the specified
                 list begins with a ‘-’ character, then the specified algorithms (including wildcards) will be
                 removed from the default set instead of replacing them.  If the specified list begins with a
                 ‘^’ character, then the specified algorithms will be placed at the head of the default set.
                 The supported algorithms are:
    
                       curve25519-sha256
                       curve25519-sha256@libssh.org
                       diffie-hellman-group1-sha1
                       diffie-hellman-group14-sha1
                       diffie-hellman-group14-sha256
                       diffie-hellman-group16-sha512
                       diffie-hellman-group18-sha512
                       diffie-hellman-group-exchange-sha1
                       diffie-hellman-group-exchange-sha256
                       ecdh-sha2-nistp256
                       ecdh-sha2-nistp384
                       ecdh-sha2-nistp521
                       sntrup761x25519-sha512@openssh.com
    
                 The default is:
    
                       curve25519-sha256,curve25519-sha256@libssh.org,
                       ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
                       sntrup761x25519-sha512@openssh.com,
                       diffie-hellman-group-exchange-sha256,
                       diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,
                       diffie-hellman-group14-sha256
    
                 The list of available key exchange algorithms may also be obtained using "ssh -Q
                 KexAlgorithms".
    ...

    image-20241127-032522.pngImage Added

  2. SSH 설정 파일은 sshd_config 파일에 필요한 알고리즘을 추가합니다.

    Code Block
    $ sudo vi /etc/ssh/sshd_config
    ...
    KexAlgorithms +diffie-hellman-group-exchange-sha1

  3. SSH 데몬을 다시 시작합니다.

    Code Block
    $ sudo systemctl restart sshd

참고: SSH 접속이 성공적으로 이루어지기 위해서는 다음 알고리즘이 모두 맞아야 합니다. 다음 알고리즘 표시 이름은 Ubuntu 22.04 버전을 참고하였습니다. OS마다 사용하는 용어가 다를 수 있으므로 sshd_config의 man 페이지를 확인하여야 합니다.

  • Key Exchange(kex) 알고리즘: KexAlgorithms

  • Host key 알고리즘: HostKeyAlgorithms

  • Mac 알고리즘: MACs

  • Public 키 알고리즘: PubkeyAcceptedAlgorithms(Public 키 인증 시 필요함)

  • Cipher: Ciphers