मैं ssh
Ubuntu 11.04 के लिए सख्त होस्ट कुंजी चेकिंग को अक्षम करना चाहूंगा । यह कैसे करना है?
ssh -o UserKnownHostsFile=/dev/null
मैं ssh
Ubuntu 11.04 के लिए सख्त होस्ट कुंजी चेकिंग को अक्षम करना चाहूंगा । यह कैसे करना है?
ssh -o UserKnownHostsFile=/dev/null
जवाबों:
आपके ~/.ssh/config
(यदि यह फ़ाइल मौजूद नहीं है, तो इसे बनाएं):
Host *
StrictHostKeyChecking no
यह आपके द्वारा कनेक्ट किए जाने वाले सभी होस्ट के लिए इसे बंद कर देगा। *
यदि आप केवल कुछ होस्ट पर लागू करना चाहते हैं, तो आप एक होस्टनाम पैटर्न के साथ बदल सकते हैं ।
सुनिश्चित करें कि फ़ाइल पर अनुमतियाँ केवल स्वयं तक पहुँच प्रतिबंधित करें:
sudo chmod 400 ~/.ssh/config
config
मेरे घर निर्देशिका में कोई फ़ाइल नाम नहीं है ।
.ssh
आपके होमडायर के उपनिर्देशिका में भी है।
ssh -o UserKnownHostsFile=/dev/null
~/.ssh/config
सभी होस्ट * के लिए इसे अपनी फ़ाइल में जोड़ने के बजाय , यह एक विशेष होस्ट को निर्दिष्ट करने के लिए सुरक्षित होगा।
आप इस तरह कमांड-लाइन पर एक पैरामीटर भी पास कर सकते हैं:
ssh -o StrictHostKeyChecking=no yourHardenedHost.com
Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
ssh -o UserKnownHostsFile=/dev/null
बजाय होना चाहिए ।
यह इंगित करने के लायक है कि आपके ssh config में सेटिंग:
StrictHostKeyChecking no
इसका मतलब यह है कि hostkeys अभी भी .ssh / ज्ञात_होस्ट में जोड़े जाते हैं - आपको सिर्फ इस बारे में संकेत नहीं दिया जाएगा कि आप उन पर भरोसा करते हैं, लेकिन मेजबान को बदलना चाहिए कि मैं शर्त लगा सकता हूं कि आपको इसके बारे में बड़ी चेतावनी मिलेगी। आप किसी अन्य पैरामीटर को जोड़कर इस समस्या को हल कर सकते हैं:
UserKnownHostsFile /dev/null
यह इन सभी "नए खोजे गए" मेजबानों को कचरा बिन में जोड़ देगा। यदि कोई होस्ट कुंजी बदलता है, तो कोई परेशानी नहीं।
मुझे यह याद नहीं होगा कि इन चेतावनियों को दरकिनार करने का उल्लेख स्पष्ट सुरक्षा प्रभाव है - आपको सावधान रहना चाहिए कि आप इसे सही कारणों के लिए कर रहे हैं और जो आप वास्तव में कनेक्ट कर रहे हैं वह वही है जो आपको कनेक्ट करने के लिए है और नहीं एक दुर्भावनापूर्ण होस्ट, इस बिंदु पर जब से आप समाधान के रूप में ssh में सुरक्षा का एक बड़ा हिस्सा मिटा दिया है।
उदाहरण के लिए यदि आप कमांडलाइन के साथ इसे सेट करना चाहते हैं, तो पूरा कमांड होगा:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
हालांकि यह मूर्खतापूर्ण होगा - यह देखते हुए कि ssh config फ़ाइलों के लिए ऊपर दिए गए कार्य उदाहरण सभी मामलों में अधिक समझ में आने की संभावना है।
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
। मेरे मामले में मैं issh
मेजबान से कनेक्ट करने के लिए उपयोग करता हूं जहां मुझे मेजबान कुंजी में परिवर्तन पता है।
UserKnownHostsFile
नहीं है UserKnownHostFiles
।
FYI करें। मैं सिर्फ cssh का उपयोग करते समय होस्ट चेकिंग को अक्षम करना पसंद करता हूं।
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
cssh
या ssh
?
-o
अनावश्यक है?
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
मेरे लिए काम करो
इससे क्या लगता है ,
NoHostAuthenticationForLocalhost yes
आपके लिए काफी अच्छा हो सकता है । और आप अभी भी सुरक्षा के उस अनुरक्षण को बनाए रखने में सक्षम होंगे।
https://askubuntu.com/a/87452/129227 कॉन्फिग फाइल को संशोधित करने का सुझाव देता है जो मदद करता है। लेकिन किसी भी मेजबान के लिए चीजों को खोलने के बजाय मैं चाहता था कि यह प्रति मेजबान किया जाए। नीचे दी गई स्क्रिप्ट प्रक्रिया को स्वचालित करने में मदद करती है:
उदाहरण कॉल
./sshcheck somedomain site1 site2 site3
sshcheck स्क्रिप्ट
#!/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.html
blue='\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 display
error() {
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"
fi
done
}
#
# 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/config
case $# in
0) usage ;;
1) usage ;;
*)
domain=$1
shift
color_msg $blue "checking ssh configuration for domain $domain sites $*"
checkconfig
checkservers $*
;;
esac