openssh 클라이언트 구성에 대한 옵션 재정의

openssh 클라이언트 구성에 대한 옵션 재정의

SSH 연결을 보호하고 싶기 때문에 사용되는 알고리즘 세트를 제한하기 위해 일부 전역 암호 제품군 옵션을 설정했습니다. 하지만 최근에 이러한 알고리즘 중 일부를 지원하지 않는 서버를 만났습니다. 따라서 클라이언트(내 시스템) 구성에서 특정 호스트 레코드에 대해 더 이상 사용되지 않는 알고리즘을 선택적으로 활성화해야 합니다.

옵션 재정의가 예상대로 작동하지 않는 것을 발견했습니다. Github에서 작동하지 않는 최소한의 예제를 살펴보겠습니다.

HostKeyAlgorithms [email protected],ssh-ed25519,[email protected],ecdsa-sha2-nistp521,ecdsa-sha2-nistp256

Host github
    HostKeyAlgorithms ssh-rsa
    Hostname        github.com
    Port            22
    User            git
    PubkeyAuthentication yes
    IdentityFile    ~/.ssh/some-filename-here

이로 인해 다음 오류가 발생합니다( HostKeyAlgorithms전혀 재정의되지 않음).

debug1: /home/username/.ssh/config line 14: Applying options for github
<...>
debug2: kex_parse_kexinit: [email protected],ssh-ed25519,[email protected],ecdsa-sha2-nistp521,ecdsa-sha2-nistp256
<...>
Unable to negotiate with 192.30.252.130: no matching host key type found. Their offer: ssh-dss,ssh-rsa

PubkeyAuthentication no마찬가지로 호스트 구성이 재정의된 전역 옵션 에서는 작동하지 않습니다 .

또한 match다음 중 하나도 도움이 되지 않습니다.

match host github
    HostKeyAlgorithms ssh-rsa

그렇다면 이러한 옵션을 선택적으로 재정의할 수 있는 방법이 있습니까?

참고: 저는 젠투에서 openssh-7.1_p2-r1을 사용하고 있습니다.

답변1

언뜻 보면 OpenSSH 옵션이 조금 이상해 보일 수 있습니다. 그러나 매뉴얼 페이지에는 ssh_config이에 대한 내용이 잘 설명되어 있습니다.

각 매개변수에 대해 처음 얻은 값이 사용됩니다.. 구성 파일에는 "호스트" 사양으로 구분된 섹션이 포함되어 있으며, 이 섹션은 사양에 제공된 패턴 중 하나와 일치하는 호스트에만 적용됩니다. 일치하는 호스트 이름은 일반적으로 명령줄에 제공된 호스트 이름입니다(예외에 대해서는 CanonicalizeHostname 옵션 참조).

필요한 것을 달성하기 위해 다음과 같이 구성을 재정의할 수 있습니다.

Host github
    HostKeyAlgorithms ssh-rsa
    Hostname        github.com
    Port            22
    User            git
    PubkeyAuthentication yes
    IdentityFile    ~/.ssh/some-filename-here
Host *
    HostKeyAlgorithms [email protected],ssh-ed25519,[email protected],ecdsa-sha2-nistp521,ecdsa-sha2-nistp256

답변2

포트 설정 과 같은 특정(자주 사용되는) 옵션 외에도 일반 옵션 -p도 있습니다 .-o

ssh -o HostKeyAlgorithms=ssh-algamel

이 값은 재정의될 수 있습니다.

관련 정보