Bir SSH config ana bilgisayar girişi için CIDR aralığını nasıl eşleştirebilirim?


22

SSH istemci yapılandırmasında (genellikle ~/.ssh/config) ana bilgisayarlarla eşleşmek için belirli CIDR bloklarını kullanmanın bir yolunu arıyorum . Örneğin, IP belirli bir aralığa düşerse, tüm trafiği bir bastion ana bilgisayarı üzerinden iletmek için bir girişim var, diyelim 10.1.0.0/16:

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

Bu çok iyi çalışıyor, ama nokta notasyonuna tam olarak uymayan bazı aralıklar eklediğimde ne olur?

# 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

El kitabında kaçırdığım bir şey mi var, yoksa bu ana bilgisayar IP aralıklarının eşleşmesini sağlayacak akıllı bir komut dosyası numarası var mı?

Yanıtlar:


24

Ssh_config dosyasındaki kalıplarla eşleşme, ağ / CIDR eşleşmesi olarak değil, temel kalıp eşleştirme olarak yapılır. Yani CIDR gösterimini kullanmak işe yaramayacak.

Adam sayfa açıklar:

Bir desen, sıfır veya daha fazla boşluk olmayan karakterden *(sıfır veya daha fazla karakterle eşleşen bir joker karakterden) veya ?(tam olarak bir karakterle eşleşen bir joker karakterden) oluşur.

Yapabileceğiniz en iyi şey, birden fazla desen listesi kullanmaktır. Yine, kılavuz sayfasından:

Bir model listesi, virgülle ayrılmış bir model listesidir. Desen listelerindeki desenler, bir ünlem işaretiyle ( !) öncelenerek ihmal edilebilir .

İki / 18 ağınızı örtmek için, listelemeniz gerekir:

  • eşleşen tüm ev sahibi 10.2.?.*(yani 10.2.0.0–10.2.9.255)
  • eşleşen tüm ev sahibi 10.2.??.*(yani 10.2.10.0–10.2.99.255)
  • eşleşen tüm ev sahibi 10.2.10?.*(yani 10.2.100.0–10.2.109.255)
  • eşleşen tüm ev sahibi 10.2.11?.*(yani 10.2.110.0–10.2.119.255)
  • Tüm ana eşleşen 10.2.12?.*olanlar eşleme HARİÇ 10.2.128.*ve 10.12.129.*(ve dışlama her şeyden önce gelmeli unutmayın!)

Kalıp listeniz şöyle görünmelidir:

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

4
Kesin olmak gerekirse, bu normal bir ifade değil, küresel bir jokerdir.
Gabor Garami 19:16

1
Cevabınız için teşekkürler, neredeyse benim için işe yarıyor ama aslında bu iki alanı ayrı hostgirişlerle ayırmam gerekiyordu. Ayrıca her birinin ayrı ayrı teklif alması gerekiyordu (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.*"
Bulabildiğim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.