SSH 구성 호스트 항목의 CIDR 범위를 어떻게 일치시킬 수 있습니까?


22

SSH 클라이언트 구성에서 호스트를 일치시키기 위해 특정 CIDR 블록을 사용하는 방법을 찾고 있습니다 (보통 ~/.ssh/config). 예를 들어 IP가 특정 범위에 속하는 경우 요새 호스트를 통해 모든 트래픽을 전달하는 항목이 있습니다 10.1.0.0/16.

host 10.1.*
    proxycommand ssh -q bastion -W %h:%p

이것은 잘 작동하지만 점 표기법에 정확히 맞지 않는 범위를 추가하면 어떨까요?

# doesn't work, unfortunately
host 10.2.0.0/18
    proxycommand ssh -q bastion-foo -W %h:%p
host 10.2.64.0/18
    proxycommand ssh -q bastion-bar -W %h:%p

내가 놓친 매뉴얼이나 이러한 호스트 IP 범위를 일치시키는 영리한 스크립팅 트릭이 있습니까?

답변:


24

ssh_config 파일의 패턴에 대한 일치는 네트워크 / CIDR 일치가 아니라 기본 패턴 일치로 수행됩니다. 따라서 CIDR 표기법을 사용하면 작동하지 않습니다.

매뉴얼 페이지 가 설명합니다 :

패턴은 공백이 아닌 0 개 이상의 문자, *0 개 이상의 문자 ?와 일치하는 와일드 카드 또는 정확히 1 개의 문자와 일치하는 와일드 카드로 구성됩니다.

할 수있는 최선의 방법은 둘 이상의 패턴 목록을 사용하는 것입니다. 다시 매뉴얼 페이지에서 :

패턴 목록은 쉼표로 구분 된 패턴 목록입니다. 패턴 목록 내의 패턴은 느낌표 ( !)로 시작하여 무시할 수 있습니다 .

따라서 두 개의 / 18 그물을 덮으려면 다음을 나열해야합니다.

  • 일치하는 모든 호스트 10.2.?.*(예 : 10.2.0.0–10.2.9.255)
  • 일치하는 모든 호스트 10.2.??.*(예 : 10.2.10.0–10.2.99.255)
  • 일치하는 모든 호스트 10.2.10?.*(예 : 10.2.100.0–10.2.109.255)
  • 일치하는 모든 호스트 10.2.11?.*(예 : 10.2.110.0–10.2.119.255)
  • 모든 호스트가 일치하는 10.2.12?.*것과 일치하는 경우를 제외 10.2.128.*하고 10.12.129.*(및 배제가 먼저 와야 기억!)

패턴 목록은 다음과 같아야합니다.

Host "10.2.?.*","10.2.??.*", "10.2.10?.*","10.2.11?.*","!10.2.128.*","!10.2.129.*","10.2.12?.*"

4
정확하게 말하면, 이것은 정규 표현식이 아니며, 어마 어마한 와일드 카드입니다.
Gabor Garami

1
답변 주셔서 감사합니다, 그것은 거의 나에게 효과적이지만 실제로 두 host항목 을 별도의 항목 으로 구별 해야했습니다. 또한 따로 인용 된 각각 (ssh / Mac)이 필요했습니다. 내가 찾을 수있는 가장 짧은 : host "10.2.?.*", "10.2.??.*", "!10.2.64*", "!10.2.65*", "!10.2.66*", "!10.2.67*", "!10.2.68*", "!10.2.69*", "!10.2.7*", "!10.2.8*", "!10.2.9*" 그리고 host "10.2.??.*", "10.2.10?.*", "10.2.11?.*", "10.2.12?.*", "!10.2.1?.*", "!10.2.2?.*", "!10.2.3?.*", "!10.2.4?.*", "!10.2.5?.*", "!10.2.60.*", "!10.2.61.*", "!10.2.62.*", "!10.2.63.*", "!10.2.128.*", "!10.2.129.*"
fazy

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.