SSH(SFTP) 서버에 지문이 여러 개 있을 수 있나요?

SSH(SFTP) 서버에 지문이 여러 개 있을 수 있나요?

Java로 자동화된 SFTP 클라이언트를 생성 중이며 물론 각 서버에 대해 서버 SSH 지문을 저장해야 하지만 서버에 두 개 이상의 고유 지문이 있을 수 있습니까?

로드 밸런서 뒤에 여러 개의 SSH 서버가 있고 각각 고유한 지문을 갖는 로드 밸런싱된 SFTP 서비스가 있을 수 있습니까? 아니면 모두가 동일한 지문을 사용하도록 강제된 걸까요?

답변1

예, 아니오.

단일 서버가 대체 알고리즘을 위해 여러 개의 호스트 키를 갖는 것이 가능합니다(실제로는최대서버는 RSA + EdDSA를 지원하지만 각 연결마다 하나의 호스트 키만 선택되며 클라이언트의 경우 하나만 기억하면 충분합니다.

로드 밸런싱된 서비스의 경우에는 마법의 메커니즘이 없습니다.모든 노드는 동일한 키를 공유합니다. 그러나 실제로는 시스템 관리자가 사용자가 더 쉽게 연결할 수 있도록 모든 노드에 동일한 키 쌍을 복사할 가능성이 매우 높습니다.


더 자세하게:

  • 우선, 심지어하나의서버는 항상 서로 다른 알고리즘을 사용하는 여러 호스트 키를 가질 수 있습니다(예: ssh-rsa 키 1개, ssh-ed25519 키 1개, ecdsa-nistp256 키 1개).

    핸드셰이크에서는 클라이언트가 하나의 키를 선택해야 하며 일반적으로 기억되는 것은 키 하나의 지문뿐입니다. 그러나 일부 클라이언트(예: PuTTY)에서는 알고리즘 마이그레이션을 지원하기 위해 사용 가능한 모든 호스트 키와의 연결 키를 다시 입력할 수 있습니다.

    예를 들어 서버의 ssh-rsa 키를 사용하여 연결하지만 ssh-ed25519 지문도 추가로 기억합니다. 나중에 서버가 ssh-rsa 지원을 비활성화하면 이제 사용자에게 다시 메시지를 표시하지 않고 ssh-ed25519를 사용할 수 있습니다.

  • 부하 분산 서비스에 연결할 때 일부 클라이언트는 알려진 여러 호스트 키를 허용합니다.같은 종류라도수동으로 승인해야 합니다.

    예를 들어, 동일한 호스트 이름이 여러 노드에서 공유되는 경우 OpenSSH 클라이언트를 사용하면 모든 공개 키를 ~/.ssh/known_hosts에 수동으로 추가하고 일치하는 항목을 수락할 수 있습니다.

    그러나 OpenSSH는 이를 수행하지 않습니다.자동으로– 첫 번째 키를 알고 나면 모든 변경 사항을 치명적인 오류로 처리합니다. 따라서 실제로는 시스템 관리자가 실제로 나쁜 사용자 경험을 피하고 로드 밸런싱된 모든 노드에 동일한 호스트 키를 복제하려고 한다고 가정합니다.

기존 클라이언트 요약:

  • PuTTY는 서버당 여러 키를 추적할 수 있지만 각 알고리즘마다 하나만 추적할 수 있습니다. 즉, [호스트 이름, 포트, 알고리즘] 조합이 고유해야 합니다.
  • OpenSSH는 고유성 요구 사항 없이 서버당 여러 키를 추적할 수 있습니다.
  • <다른 클라이언트?>

관련 정보