होस्ट किए गए नामों की सूची के साथ एक क्रिप्टेड .ssh / ज्ञात_होस्ट के होस्टनाम को कैसे डीक्रिप्ट करें?


14

मैं होस्टनाम की सूची पास करके ज्ञात_होस्ट फ़ाइल में ssh होस्टनाम को डिक्रिप्ट (अनहैश) करने के लिए एक स्क्रिप्ट खोजने का प्रयास करता हूं

तो, ठीक इसके विपरीत करने के लिए :

ssh-keygen -H -f known_hosts

या भी, ऐसा करने के लिए यदि ssh config HashKnownHosts सं। पर सेट है:

ssh-keygen -R know-host.com -f known_hosts
ssh-keyscan -H know-host.com >> known_hosts

लेकिन होस्ट कुंजी (ssh-keyscan के कारण) को फिर से डाउनलोड किए बिना।

कुछ इस तरह:

ssh-keygen --decrypt -f known_hosts --hostnames hostnames.txt

जहाँ hostnames.txt में होस्टनाम की सूची है।


होस्टनाम में प्रविष्टियों का हिस्सा हैं known_hosts। डिक्रिप्ट करने के लिए क्या है?
मुरु

2
मेरा मतलब एक क्रिप्टेड ज्ञात_होस्ट फ़ाइल के लिए है। जहां ssh config HashKnownHosts को हां करना है। मैंने शीर्षक को संशोधित किया।
Xorax

जवाबों:


22

known_hostsफ़ाइल में लाइनें एन्क्रिप्ट नहीं की गई हैं, वे हैशेड हैं। आप उन्हें डिक्रिप्ट नहीं कर सकते, क्योंकि वे एन्क्रिप्टेड नहीं हैं। आप उन्हें "अनहैश" नहीं कर सकते, क्योंकि हैश के बारे में क्या है - हैश को देखते हुए, मूल स्ट्रिंग की खोज करना असंभव है। "अनहैश" करने का एकमात्र तरीका मूल स्ट्रिंग का अनुमान लगाना और अपने अनुमान को सत्यापित करना है।

यदि आपके पास होस्ट नामों की सूची है, तो आप ssh-keygen -Fउन्हें होस्ट नाम से बदल सकते हैं और उन्हें बदल सकते हैं ।

while read host comment; do
  found=$(ssh-keygen -F "$host" | grep -v '^#' | sed "s/^[^ ]*/$host/")
  if [ -n "$found" ]; then
    ssh-keygen -R "$host"
    echo "$found" >>~/.ssh/known_hosts
  fi
done <hostnames.txt

¹ एक व्यावहारिक अर्थ में, यह वर्तमान में मौजूद सभी कंप्यूटरों को ब्रह्मांड की वर्तमान आयु से अधिक समय तक ले जाएगा।


13

Ssh-keygen (1) मैन पेज -F hostnameविकल्प के लिए कहता है :

एक ज्ञात_होस्ट फ़ाइल में निर्दिष्ट होस्टनाम के लिए खोजें, किसी भी घटना को सूचीबद्ध करें। यह विकल्प हैशेड होस्ट नाम या पते खोजने के लिए उपयोगी है और -Hहैशेड प्रारूप में पाया गया कुंजी को प्रिंट करने के विकल्प के साथ संयोजन में भी उपयोग किया जा सकता है ।

ऐसा लगता है कि आप क्या चाहते हैं।


यह हैशेड होस्टनाम के साथ लाइन लौटाता है। मैं इसे ज्ञात_होस्ट फ़ाइल में बदलने के लिए इसे अनहैश करना चाहता हूं। इसे प्रत्येक पंक्ति को पार्स करने के लिए स्क्रिप्ट की आवश्यकता होती है, इसे अन-हैश करें और फिर इसे ज्ञात_होस्ट फ़ाइल में बदलें।
Xorax

2
@Xorax हाँ, लेकिन इस कमांड के साथ, आप हैशेड होस्टनाम को पुनः प्राप्त कर सकते हैं, और इसे known_hostsफ़ाइल में बदल सकते हैं sed
vinc17
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.