एसएसएच में सख्त होस्ट कुंजी जांच को अक्षम कैसे करें?

मैं सख्त होस्ट कुंजी जाँच को अक्षम करना चाहूंगा ssh उबंटू 11.04 के लिए । यह कैसे करना है?

अपने में ~/.ssh/config (यदि यह फ़ाइल मौजूद नहीं है, तो बस इसे बनाएं):

Host *    StrictHostKeyChecking no

यह आपके द्वारा कनेक्ट किए गए सभी होस्ट के लिए इसे बंद कर देगा । आप बदल सकते हैं * होस्टनाम पैटर्न के साथ यदि आप केवल कुछ मेजबानों पर लागू करना चाहते हैं ।

सुनिश्चित करें कि फ़ाइल पर अनुमतियाँ केवल स्वयं तक पहुँच को प्रतिबंधित करती हैं:

sudo chmod 400 ~/.ssh/config

इसे अपने में जोड़ने के बजाय ~/.ssh/config सभी होस्ट * के लिए फ़ाइल, किसी विशेष होस्ट को निर्दिष्ट करना सुरक्षित होगा ।

आप इस तरह कमांड-लाइन पर एक पैरामीटर भी पास कर सकते हैं:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com

यह स्वचालित रूप से होस्ट कुंजी को आपकी ज्ञात_होस्ट फ़ाइल में जोड़ देगा यदि यह पहले से नहीं है ।

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

यह इंगित करने योग्य है कि आपके एसएसएच कॉन्फ़िगरेशन में सेटिंग:

StrictHostKeyChecking no

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

UserKnownHostsFile /dev/null

यह इन सभी "नए खोजे गए" मेजबानों को ट्रैश बिन में जोड़ देगा । यदि कोई होस्ट कुंजी बदलती है, तो कोई परेशानी नहीं ।

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

उदाहरण के लिए यदि आप कमांडलाइन के साथ इसे आज़माते और सेट करते हैं, तो पूर्ण कमांड होगा:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host

हालांकि यह मूर्खतापूर्ण होगा-यह देखते हुए कि एसएसएच कॉन्फ़िगरेशन फ़ाइलों के लिए ऊपर दिए गए काम के उदाहरण सभी मामलों में अधिक समझ में आने की संभावना है ।

एफवाईआई। मैं सीएसएसएच का उपयोग करते समय होस्ट चेकिंग को अक्षम करना पसंद करता हूं ।

alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'

यदि आप एक बार आधार उपयोग पर अक्षम करना चाहते हैं:

ssh -o UserKnownHostsFile=/dev/null

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

क्या यह से लगता है जैसे,

NoHostAuthenticationForLocalhost yes

हो सकता है आपके लिए काफी अच्छा है । और आप अभी भी सुरक्षा के उस झलक को बनाए रखने में सक्षम होंगे ।

https://askubuntu.com/a/87452/129227 कॉन्फ़िगरेशन फ़ाइल को संशोधित करने का सुझाव दें जो मदद करता है । लेकिन किसी भी मेजबान के लिए चीजों को खोलने के बजाय मैं चाहता था कि यह प्रति मेजबान किया जाए । नीचे दी गई स्क्रिप्ट प्रक्रिया को स्वचालित करने में मदद करती है:

उदाहरण कॉल

./ शशचेक सोमडोमेन साइट1 साइट2 साइट3

शेचेक स्क्रिप्ट

#!/bin/bash# WF 2017-08-25# check ssh access to bitplan servers#ansi colors#http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.htmlblue='\033[0;34m'  red='\033[0;31m'  green='\033[0;32m' # '\e[1;32m' is too bright for white bg.endColor='\033[0m'## a colored message #   params:#     1: l_color - the color of the message#     2: l_msg - the message to display#color_msg() {  local l_color="$1"  local l_msg="$2"  echo -e "${l_color}$l_msg${endColor}"}## error##   show an error message and exit##   params:#     1: l_msg - the message to displayerror() {  local l_msg="$1"  # use ansi red for error  color_msg $red "Error: $l_msg" 1>&2  exit 1}## show the usage#usage() {  echo "usage: $0 domain sites"  exit 1 }## check the given server#checkserver() {  local l_server="$1"  grep $l_server $sconfig > /dev/null  if [ $? -eq 1 ]  then    color_msg $blue "adding $l_server to $sconfig"    today=$(date "+%Y-%m-%d")    echo "# added $today by $0"  >> $sconfig    echo "Host $l_server" >> $sconfig    echo "   StrictHostKeyChecking no" >> $sconfig    echo "   userKnownHostsFile=/dev/null" >> $sconfig    echo "" >> $sconfig  else    color_msg $green "$l_server found in $sconfig"  fi  ssh -q $l_server id > /dev/null  if [ $? -eq 0 ]  then    color_msg $green "$l_server accessible via ssh"  else    color_msg $red "ssh to $l_server failed"     color_msg $blue "shall I ssh-copy-id credentials to $l_server?"    read answer    case $answer in      y|yes) ssh-copy-id $l_server    esac  fi}## check all servers#checkservers() {me=$(hostname -f)for server in $(echo $* | sort)do  os=`uname`  case $os in   # Mac OS X   Darwin*)     pingoption=" -t1";;    *) ;;  esac  pingresult=$(ping $pingoption -i0.2 -c1 $server)  echo $pingresult | grep 100 > /dev/null  if [ $? -eq 1 ]  then     checkserver $server    checkserver $server.$domain  else    color_msg $red "ping to $server failed"  fidone}## check configuration#checkconfig() {#https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh  if [ -f $sconfig ]  then    color_msg $green "$sconfig exists"    ls -l $sconfig  fi}sconfig=~/.ssh/configcase  $# in  0) usage ;;  1) usage ;;  *)     domain=$1     shift     color_msg $blue "checking ssh configuration for domain $domain sites $*"    checkconfig    checkservers $*     ;;esac

हाय कार्तिक 87, मुझे आशा है कि आप उस परिवर्तन को बनाने के सुरक्षा निहितार्थों को समझेंगे :wink:

एसएसएच का उपयोग न केवल दूरस्थ कनेक्शन के लिए किया जाता है, आप जानते हैं । मेरे द्वारा कनेक्ट किए जा रहे सभी होस्ट मेरी टेबल पर ढेर में हैं और एक ही आईपी साझा करते हैं, इसलिए मेरे पास हमेशा नई होस्ट चेतावनी होती है ।

यदि आपको केवल त्रुटियों के बिना एक बार कनेक्ट करने की आवश्यकता है: एसएसएच-ओ उपयोगकर्ता ज्ञात होस्टफाइल=/देव/नल

हालांकि, यह ध्यान दिया जाना चाहिए कि आप चाहते हैं यह जानना कि क्या होस्ट कुंजी बदल गई है । यह एक बड़ा लाल झंडा है कि कोई मेजबान को धोखा दे सकता है । तो उपयोगकर्ता ज्ञात होस्टफाइल/देव / नल वास्तव में एक बुरा विचार है ।

यदि आप किसी विशेष होस्ट के लिए संदेश निकालना चाहते हैं, तो संबंधित पंक्ति ~/हटा दें । एसएसएच / ज्ञात_होस्ट।

धन्यवाद @ ओडिन्हो-वेलमोंट, मुझे ऐसा करने की ज़रूरत थी जब कई अलग-अलग मेजबानों से एक ही स्थानीय बंदरगाह (एक समय में, निश्चित रूप से) में सुरंग को उल्टा करना । इसके बिना, सर्वर एक ही क्रेडेंशियल्स का उपयोग करके विभिन्न सर्वरों से कनेक्ट करते समय शिकायत करता है ।

बेशक इस प्रश्न के वैध कारण हैं, लेकिन चेतावनी प्रमुख होने से लोगों को गलत कारण से इस पृष्ठ पर आने पर उनकी रक्षा करने में मदद मिलती है ।