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
이 값은 재정의될 수 있습니다.