ubuntu - "होस्ट कुंजी सत्यापन विफल" होने पर ssh कुंजी जोड़ी कैसे स्थापित करें




foreign-keys (6)

मैंने अपने डेस्कटॉप और दो सर्वरों के बीच एसएसएच कुंजी जोड़े सेट किए हैं, और सर्वर से मेरे डेस्कटॉप पर, लेकिन मेरे डेस्कटॉप पर ओएस को पुनर्स्थापित करने के बाद, मैं अपने डेस्कटॉप में कीपैयर को फिर से स्थापित नहीं कर सकता:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t 
ssh-copy-id [email protected]

मुझे निम्नलिखित त्रुटि मिलती है:

(इटालिक्स में नाम निर्दोषों की रक्षा के लिए बदल गए हैं मेरा डेस्कटॉप उबंटू है, और मुझे here जवाब नहीं मिल रहा here )

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @ चेतावनी: रिमोट होस्ट पहचान बदल दी गई है! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ यह संभव है कि कोई कुछ नास्टी कर रहा है! कोई व्यक्ति अभी आप पर छेड़छाड़ कर सकता है (मैन-इन-द-बीच हमला)! यह भी संभव है कि आरएसए होस्ट कुंजी अभी बदल दी गई है। रिमोट होस्ट द्वारा भेजे गए आरएसए कुंजी के लिए फिंगरप्रिंट ab है: cd: ef: gh कृपया अपने सिस्टम व्यवस्थापक से संपर्क करें। इस संदेश से छुटकारा पाने के लिए / home / user /.ssh/known_hosts में सही होस्ट कुंजी जोड़ें। / Home / user /.ssh/known_hosts:1 में अपमानजनक कुंजी user.server के लिए आरएसए होस्ट कुंजी बदल गई है और आपने सख्त जांच का अनुरोध किया है। होस्ट कुंजी सत्यापन विफल रहा।


इसका मतलब है कि आपकी रिमोट होस्ट कुंजी बदल दी गई थी (मेजबान पासवर्ड परिवर्तन हो सकता है)

आपके टर्मिनल ने रूट कमांड के रूप में इस कमांड को निष्पादित करने का सुझाव दिया है

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

आपको अपने पीसी / सर्वर पर मेजबान सूची से उस होस्ट नाम को हटाना होगा। सुझाए गए आदेश की प्रतिलिपि बनाएँ और रूट उपयोगकर्ता के रूप में निष्पादित करें।

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh [email protected] -p 4231                              // Try again

मेरी आशा है कि इससे काम हो जाए।


कभी-कभी स्थिति होती है जब आप सीरियल कंसोल पर काम कर रहे होते हैं, तो वर्बोज़ मोड में उपरोक्त कमांड की जांच -v आपको दिखाएगा कि यह / dev / tty मौजूद नहीं है, जबकि यह करता है।

उपर्युक्त मामले में बस / dev / tty को हटाएं और / dev / ttyS0 / dev / tty के symlink बनाएं।


यदि आप सुनिश्चित हैं कि सर्वर सही है, sed -i 1d ~/.ssh/known_hosts आपके स्थानीय ~/.ssh/known_hosts की पंक्ति 1 को हटा देगा। अगली बार कनेक्ट होने पर नई सही कुंजी फ़ाइल में जोड़ दी जाएगी।


सबसे अधिक संभावना है कि रिमोट होस्ट आईपी या ip_alias ~ / .ssh / known_hosts फ़ाइल में नहीं है। होस्ट नाम को known_hosts फ़ाइल में जोड़ने के लिए आप निम्न आदेश का उपयोग कर सकते हैं।

$ssh-keyscan -H -t rsa ip_or_ipalias >> ~/.ssh/known_hosts

साथ ही, मैंने निम्न स्क्रिप्ट जेनरेट की है यह जांचने के लिए कि क्या विशेष आईपी या ipalias know_hosts फ़ाइल में है या नहीं।

#!/bin/bash
#Jason Xiong: Dec 2013   
# The ip or ipalias stored in known_hosts file is hashed and   
# is not human readable.This script check if the supplied ip    
# or ipalias exists in ~/.ssh/known_hosts file

if [[ $# != 2 ]]; then
   echo "Usage: ./search_known_hosts -i ip_or_ipalias"
   exit;
fi
ip_or_alias=$2;
known_host_file=/home/user/.ssh/known_hosts
entry=1;

cat $known_host_file | while read -r line;do
  if [[ -z "$line" ]]; then
    continue;
  fi   
  hash_type=$(echo $line | sed -e 's/|/ /g'| awk '{print $1}'); 
  key=$(echo $line | sed -e 's/|/ /g'| awk '{print $2}');
  stored_value=$(echo $line | sed -e 's/|/ /g'| awk '{print $3}'); 
  hex_key=$(echo $key | base64 -d | xxd -p); 
  if  [[ $hash_type = 1 ]]; then      
     gen_value=$(echo -n $ip_or_alias | openssl sha1 -mac HMAC \
         -macopt hexkey:$hex_key | cut -c 10-49 | xxd -r -p | base64);     
     if [[ $gen_value = $stored_value ]]; then
       echo $gen_value;
       echo "Found match in known_hosts file : entry#"$entry" !!!!"
     fi
  else
     echo "unknown hash_type"
  fi
  entry=$((entry + 1));
done

rm -f /home/user/.ssh/known_hosts

या इसे खोलें और अपमानजनक आईपी / होस्टनाम के लिए प्रविष्टि को हटा दें

(पीएस यह आपको आपके द्वारा पोस्ट किए गए त्रुटि संदेश में बिल्कुल बताता है)


ssh-keygen -R hostname

यह ज्ञात_होस्ट से अपमानजनक कुंजी हटा देता है

मैन पेज एंट्री पढ़ता है:

-R hostname किसी ज्ञात_होस्ट फ़ाइल से होस्टनाम से संबंधित सभी कुंजियों को हटा देता है। यह विकल्प हैश होस्ट को हटाने के लिए उपयोगी है (ऊपर -एच विकल्प देखें)।





foreign-keys