Regexp, .ssh / config


12

काम पर, मुझे अक्सर मेजबानों में लॉग इन करना पड़ता है जो एक सामान्य नामकरण योजना का पालन करते हैं, जैसे qc01- qc12, hc01- hc10, और इसी तरह। इन सभी को मेरे लैपटॉप में समान कॉन्फ़िगरेशन मान प्राप्त करने की आवश्यकता है .ssh/config। बेशक, मैं मेजबानों के लिए प्रविष्टियों का उपयोग कर सकता हूं qc*और hc*, लेकिन मैं सोच रहा हूं कि क्या इसके बजाय नियमित अभिव्यक्ति का उपयोग करना संभव है?

जवाबों:


11

जैसा कि जेलरैन ने कहा कि डिफ़ॉल्ट ssh_configनियमित अभिव्यक्तियों का समर्थन नहीं करेगा लेकिन आप कुछ अलग करने की कोशिश कर सकते हैं जैसे:


4

कृपया, देखने PATTERNSमें अनुभाग man ssh_config

लंबा उत्तर है: नहीं, आप ऐसा नहीं कर सकते, जब तक कि आप अपने sshसमर्थन के लिए पैच न करें ।


मुझे यह अनुभाग अपने में नहीं मिल रहा है man ssh_config
पेट्रीक


क्या संस्करण दिखाई दिया?
वॉनब्रांड

3

आप अपने में पूर्ण नियमित अभिव्यक्ति का उपयोग कर सकते हैं ssh_config

प्रासंगिक प्रलेखन IMO को पढ़ने और समझने में बहुत कठिन है। मैं केवल इसे समझता हूं क्योंकि मेरे पास 13+ वर्ष का लिनक्स अनुभव है और 8+ वर्ष का उपयोग कर रहा है ssh। तो यहाँ मेरे प्रलेखन का सारांश है:

  • man ssh_config नामक एक विशेषता का वर्णन करता है Match
  • फिर एक विशेषता है जिसे कहा जाता है execकि आप एक मैच का निर्धारण करने के लिए एक मनमाना शेल कमांड का उपयोग करते हैं
  • मनमाने ढंग से शेल कमांड में इनपुट पैरामीटर पास करना संभव है और लेबल किए गए अनुभाग में वर्णित है TOKENS

मेरे मामले में मैंने अपने प्रयोग से समाप्त किया~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

परीक्षण कुछ इस तरह मुश्किल से किया जाना चाहिए। और उस परीक्षण को करने के लिए जिसे आप कहते हैं ssh -vvv HOSTNAME। जो वास्तव में दिखा रहा है कि क्या हो रहा है, और क्या आपका नया Matchसही ढंग से लागू किया गया है।


0

ट्रेवर के उत्तर का विस्तार:

अधिक जटिल होस्ट भी संभव हैं, जैसे मिलान foo123.123और उपयोग किए गए होस्टनाम के लिए DNS प्रविष्टियों के बिनाfoo10.10 एक नियम में :

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

शेल के साथ% h की सामग्री में हेरफेर करने के लिए ProxyCommand का उपयोग करना और एक netcat के माध्यम से सही पोर्ट से कनेक्ट करना। इस तरह आप व्यक्तिगत प्रविष्टियों को बनाए बिना, मेजबानों की श्रेणी के लिए प्रीसेट बना सकते हैं ।

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