ज्ञात_होस्ट्स में एक आईपी रेंज कैसे जोड़ें?


15

कई सेवाएं (जैसे GitHub) IP की एक विस्तृत श्रृंखला का उपयोग करती हैं, और जाहिर है कि एक ही सार्वजनिक कुंजी।

मैं एक आईपी रेंज (अधिमानतः एक एकल में) ज्ञात_होस्ट फ़ाइल में कैसे जोड़ सकता हूं?

GitHub उदाहरण के लिए, यह निम्न श्रेणियों का उपयोग करता है:

  • 207.97.227.224/27
  • 173.203.140.192/27
  • 204.232.175.64/27
  • 72.4.117.96/27
  • 192.30.252.0/22

और कुंजी है:

AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / yMf + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==


1
वे IP यहां पूरी तरह से सार्वजनिक हैं
RSFalcon7

जवाबों:


11

जैसा कि अन्य उत्तरों में कहा गया है, ज्ञात_होस्ट्स के पास आईपी एड्रेस रेंज के लिए समर्थन नहीं है। हालांकि, यह वाइल्डकार्ड का समर्थन करता है। बेशक वाइल्ड-कार्ड्स बहुत समान नहीं हैं, इसलिए आपको इस बात से सावधान रहने की ज़रूरत है कि आप उन्हें आईपी एड्रेस में कैसे इस्तेमाल करते हैं, लेकिन गितुब के विशेष मामले में यह सुरक्षित रूप से किया जा सकता है।

सवाल पूछे जाने के बाद से स्थिति सरल हो गई है। गितुब के आधिकारिक दस्तावेज के अनुसार उपयोग में केवल एक आईपी पता सीमा है (कम से कम जहां तक ​​आईपीवी 4 जाता है)। यह 192.30.252.0/22 ​​रेंज है। यह 1020 संभव आईपी पतों के लिए बनाता है जो केवल चार अलग-अलग सी ब्लॉकों में अंतिम ओकटेट के लिए पूरी तरह से संभव सीमा का विस्तार करते हैं।

इससे man 8 sshd, हमें ज्ञात_होस्ट्स में काम करना है:

होस्टनाम एक अल्पविराम से अलग पैटर्न की सूची है *' and; ( वाइल्डकार्ड के रूप में कार्य); प्रत्येक पैटर्न बदले में विहित मेजबान नाम (जब एक ग्राहक को प्रमाणित करता है) या उपयोगकर्ता द्वारा आपूर्ति किए गए नाम (जब एक सर्वर को प्रमाणित करता है) के खिलाफ मेल खाता है। एक पैटर्न भी !' to indicate negation: if the host name matches a negated pattern, it is not accepted (by that line) even if it matched another pattern on the line. A hostname or address may optionally be enclosed within['और ]' brackets then followed by:' और एक गैर-मानक पोर्ट नंबर से पहले हो सकता है ।

इस जानकारी का उपयोग करके, हम अंतिम ओकेट के लिए * वाइल्डकार्ड का उपयोग करके एक प्रविष्टि का निर्माण कर सकते हैं जो कि सभी संभावित गितुब एंडपॉइंट्स (और केवल उन समापन बिंदुओं) से मेल खाती है जैसे:

github.com,192.30.252.*,192.30.253.*,192.30.254.*,192.30.255.* ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==

यदि आपके द्वारा बनाई जाने वाली आईपी रेंज में एक पूर्ण सी ब्लॉक नहीं भरा है और इस तरह एक ऑक्टेट के लिए सभी संभावित मान हैं, तो इस तरह के एक सटीक मैच के लिए वाइल्डकार्ड का उपयोग करना असंभव होगा।


8

मुझे नहीं लगता कि आप आसानी से पर्वतमाला जोड़ सकते हैं, लेकिन मुझे लगता है (अभी यह परीक्षण नहीं कर सकते हैं) कि निम्नलिखित प्रभाव को .ssh / ssh_config में जोड़कर प्राप्त किया जा सकता है:

Host *.github.com
HostKeyAlias github-server-pool.github.com

इसके बाद, आप github-server-pool.github.com नाम से ज्ञात_होस्ट फ़ाइल की कुंजी जोड़ेंगे।

धारणा: मेजबान github-server-pool.github.com SSH के माध्यम से मौजूद नहीं है या कभी नहीं जुड़ा है।

इसके पीछे का विचार यह है कि ssh github.com डोमेन के सभी होस्टों के लिए सार्वजनिक होस्ट कुंजी देखने के लिए कुंजी github-server-pool.github.com का उपयोग करेगा।


यह एक महान जवाब है, और मूल की तुलना में आसान है।
kael

4

known_hostsफ़ाइल में IP पते सेट के लिए कोई समर्थन नहीं है । आपको प्रति पता एक पंक्ति में होना पड़ेगा।

यद्यपि प्रविष्टियों का होस्ट नाम भाग डिफ़ॉल्ट रूप से हैश किया गया है, यह केवल गोपनीयता के लिए है ताकि कोई व्यक्ति आपकी पकड़ .known_hostsको आसानी से यह पता लगाने में सक्षम न हो कि आप किस होस्ट से जुड़ रहे हैं। (वे अभी भी अनुमानों को सत्यापित कर सकते हैं।) आप एक सादे होस्ट नाम या आईपी पते का उपयोग कर सकते हैं।

for net in 207.97.227.224/27 173.203.140.192/27 204.232.175.64/27 72.4.117.96/27 192.30.252.0/24 192.30.252.1/24 192.30.252.2/24 192.30.252.3/24; do
  base=${net%/*}; d=${base##*.}; abc=${base%.*}
  bits=$((32 - ${net#*/}))
  e=0
  while [ $e -lt $((2 ** bits) ]; do
    echo "$abc.$((d + e)) ssh-rsa AAAAB3NzaC1yc…" >>~/.ssh/known_hosts
    e=$((e + 1))
  done
done

ध्यान दें कि यह डुप्लिकेट जोड़ सकता है।


निश्चित, लेकिन केवल
0.0.0.0/24

@ RSFalcon7 वास्तव में। आईपी ​​एड्रेस अंकगणित कष्टप्रद है। मैंने एक त्वरित और गंदा काम किया है ... यदि आपको बड़े नेटवर्क के लिए समर्थन की आवश्यकता है, तो एन्यूमरेशन करने से पहले आईपी पते को 32-बिट संख्या में परिवर्तित करें।
गिल्स एसओ- बुराई को रोकें '

0

SSH के पास ज्ञात_होस्ट के लिए IP श्रेणी की कोई अवधारणा नहीं है। मुझे लगता है कि यह धारणा है कि प्रत्येक मेजबान के पास सुरक्षा कारणों से एक अद्वितीय कुंजी होगी।

आपके ज्ञात_होस्ट को पूर्व-आबाद करने के दो तरीके मैं देख सकता हूं:

  1. ssh-keyscan- उन सभी पतों के माध्यम से पुनरावृति करने के लिए एक संक्षिप्त स्क्रिप्ट लिखें और या तो इसे पढ़ने के ssh-keyscanलिए या किसी फ़ाइल को फ़ीड करें ssh-keyscanssh-keyscanया तो एक लाइन पर निर्दिष्ट या मेजबानों की सूची को निर्दिष्ट करने के माध्यम से, कई मेजबान प्रति आह्वान को स्कैन कर सकते हैं।

  2. known_hostsएक स्क्रिप्ट या संपादक के साथ खुद को आबाद करें। यदि आप गैर-हैशेड संस्करण का उपयोग करते हैं तो प्रारूप काफी सरल है। यह है:

    होस्टनाम, आईपी एड्रेस ssh-keytype कुंजी

hostnameहोस्टनाम आपके द्वारा संपर्क किया गया है, और सभी GitHub पतों के लिए समान होगा। IP addressएक स्क्रिप्ट के माध्यम से पुनरावृति होगी। keyऊपर दी गई कुंजी है।

न तो सुरुचिपूर्ण है, लेकिन मुझे लगता है कि SSH के लोगों ने माना कि कोई भी ऐसा नहीं करेगा जो GitHub कर रहा है।


कोई भी ऐसा नहीं करना चाहिए जो गीथूब कर रहा है। यह एक मेजबान कुंजी है, "समान मेजबानों का समूह" कुंजी नहीं।

@ WumpusQ.Wumble मैं सहमत हूँ। लेकिन मुझे संदेह है कि GitHub मेरे कहने पर बदल जाएगा।
कर्टम

0

नमस्ते मुझे गाइल्स की स्क्रिप्ट काफी उपयोगी लगी, लेकिन केवल नेटवर्क तक काम करना 0.0.0.0/24एक सीमा थी, मैंने स्क्रिप्ट को बड़े नेटवर्क के साथ काम करने के लिए बढ़ाया है, 0.0.0.0/16शायद यह किसी और के लिए उपयोगी होगा।

#!/bin/sh
# http://unix.stackexchange.com/questions/94448/how-to-add-an-ip-range-to-known-hosts
# answered Oct 11 '13 at 0:21  Gilles
# only working for networks up to 0.0.0.0/24
# Declan Forde - Increased the range up to 0.0.0.0/16 networks


NETWORKS="127.0.0.0/30 127.0.0.0/29 127.0.0.0/28 127.0.0.0/27 127.0.0.0/26 127.0.0.0/25 127.0.0.0/24 127.0.0.0/23 127.0.0.0/22 127.0.0.0/21 127.0.0.0/16"

for net in ${NETWORKS}
do
  base=${net%/*}
  bits=$((32 - ${net#*/}))

  abc=${base%.*}
  ab=${abc%.*}
  c=${abc##*.}
  d=${base##*.}

  if [ $bits -gt 8 ] && [ $bits -le 16 ]
  then
    netbits=$((bits - 8))
    bits=8
  else
    netbits=0
  fi

  netcount=0
  while [ $netcount -lt $((2 ** netbits)) ]
  do
    count=0
    while [ $count -lt $((2 ** bits)) ]
    do
      echo "$ab.$c.$((d + count))"
      echo "$ab.$c.$((d + count)) ssh-rsa AAAAB3NzaC1yc." >>~/.ssh/known_hosts
    count=$((count + 1))
    done
    netcount=$((netcount + 1))
    c=$((c + 1))
  done
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.