SSH 서버 측, 각 호스트에 대한 알고리즘 지정

SSH 서버 측, 각 호스트에 대한 알고리즘 지정

SSH를 실행하는 서버에서는 클라이언트에서 서버로 파일을 복사할 수 있도록 특정 SSH 호스트 1개의 일부 이전 알고리즘을 허용해야 합니다. 클라이언트가 오래되고 쓰레기이기 때문에 변경할 수 없습니다. 그래서 서버 측에서 다음과 같이 /etc/sshd_config를 편집하여 문제를 해결했습니다.

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

그러나 문제는 ssh-rsa가 안전하지 않다는 것입니다. 그래서 이대로 떠나고 싶지 않아요. 소스 IP가 1.2.3.4인 경우 이러한 알고리즘이 해당 호스트에 적용되도록 구체적으로 허용하고 해당 호스트가 이러한 알고리즘을 개별적으로 사용할 수 있도록 이를 설정하려면 어떻게 해야 합니까?

답변1

다른 호스트별 구성을 지정하는 것과 동일

Host my.hostname.example.com
  PubkeyAcceptedKeyTypes +ssh-rsa

HostKeyAlgorithms그런데 이전 원격 호스트에만 연결하려는 경우에는 이 옵션이 필요하지 않습니다.

답변2

sshd호스트(또는 사용자)에 대해 다양한 구성 옵션을 사용하는 방법은 Match조건부 줄 블록을 사용하는 것입니다. 연결하는 클라이언트의 호스트 이름이나 IP 주소를 확인할 수 있는지 여부에 Match Host ...따라 이것이 더 적절할 수도 있고 그렇지 않을 수도 있습니다. 예를 들어:Match Address ...sshd

Match Address 10.11.12.13 10.9.8.7
  PubkeyAcceptedKeyTypes +ssh-rsa

매뉴얼 sshd_config페이지는 사용법에 대한 자세한 정보를 제공 Match하지만 대부분의 매뉴얼 페이지에서 명확하게 설명하지 못하는 한 가지는 sshd_config 파일에서 Match 블록의 올바른 위치입니다. 파일 끝에.

내 Ubuntu 20.04의 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

"일치" 줄의 모든 조건이 충족되면 다음 줄의 키워드는 다른 "일치" 줄이나 파일 끝까지 구성 파일의 전역 섹션에 설정된 키워드를 재정의합니다.

Match 뒤의 줄이 전역 구성 지시문이 아니라 파일 끝까지 다른 Match 블록의 지시문이어야 한다는 것을 확인하려면 해당 문장을 주의 깊게 해석해야 합니다.

소스 코드의 주석 블록은 다음과 같이 이를 보다 명시적으로 나타냅니다.이 답변은 작년에 나온 것입니다.. Match 블록이 발견되면 변수가 activep지워지고(0으로 설정) 파일의 나머지 부분에 있는 매개변수는 전역 구성 지시문으로 간주되지 않습니다. 모두 Match 블록의 일부입니다.

대부분의 답변은 이 질문과 관련이 없는 몇 가지 특이한 점에 관한 것입니다. 소스코드에 주석이 표시되어 있어서 링크했습니다.

관련 정보