मैं SSH कॉन्फ़िगर होस्ट प्रविष्टि के लिए CIDR श्रेणी से कैसे मिलान कर सकता हूं?


22

मैं SSH क्लाइंट कॉन्फ़िगरेशन (आमतौर पर ~/.ssh/config) में मेजबान से मेल करने के लिए विशिष्ट CIDR ब्लॉक का उपयोग करने का एक तरीका ढूंढ रहा हूं । उदाहरण के लिए, मेरे पास एक गढ़ होस्ट के माध्यम से सभी ट्रैफ़िक को आगे करने के लिए एक प्रविष्टि है यदि आईपी एक निश्चित सीमा में आता है, तो हम कहते हैं 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

क्या मैनुअल में कुछ ऐसा है जो मुझे याद नहीं है, या एक चतुर स्क्रिप्टिंग ट्रिक है जो इन होस्ट आईपी रेंज से मेल खाने में सक्षम होगा?

जवाबों:


24

Ssh_config फ़ाइल में प्रतिमानों का मिलान बुनियादी पैटर्न मिलान के रूप में किया जाता है, न कि नेटवर्क / CIDR मिलान के रूप में। इसलिए CIDR नोटेशन का उपयोग करने से काम नहीं चलने वाला है।

आदमी पेज कि बताते हैं:

एक पैटर्न में शून्य या अधिक गैर-व्हाट्सएप वर्ण होते हैं, *(एक वाइल्डकार्ड जो शून्य या अधिक वर्णों से मेल खाता है), या ?(एक वाइल्डकार्ड जो बिल्कुल एक वर्ण से मेल खाता है)।

सबसे अच्छा आप एक से अधिक पैटर्न की सूची का उपयोग कर सकते हैं। फिर से, मैनुअल पेज से:

एक पैटर्न-सूची पैटर्न की एक अल्पविराम से अलग सूची है। पैटर्न-सूचियों के भीतर के पैटर्न को विस्मयादिबोधक चिह्न ( !) के साथ पहले से नकार दिया जा सकता है ।

इसलिए अपने दो / 18 नेट को कवर करने के लिए, आपको सूचीबद्ध करना होगा:

  • सभी मेजबानों का मिलान 10.2.?.*(अर्थात 10.2.0.0-10.2.9.255)
  • सभी 10.2.??.*यजमानों का मिलन (अर्थात 10.2.10.0-10.2.2.2.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
सटीक होने के लिए, यह एक नियमित अभिव्यक्ति नहीं है, यह एक निराशाजनक वाइल्डकार्ड है।
गाबेर गरामी

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.*"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.