Ssh හි දැඩි ධාරක යතුරු පරීක්ෂා කිරීම අක්‍රිය කරන්නේ කෙසේද?


251

sshඋබුන්ටු 11.04 සඳහා දැඩි ධාරක යතුරු පිරික්සුම අක්‍රිය කිරීමට මම කැමතියි . එය කරන්නේ කෙසේද?


10
හායි karthick87, එම වෙනස සිදු කිරීමේ ආරක්‍ෂිත ඇඟවුම් ඔබ තේරුම් ගනී යැයි මම විශ්වාස කරමි;)
පැන්තර්

1
කෙසේ වෙතත්, සත්කාරක යතුර වෙනස් වී ඇත්දැයි දැන ගැනීමට ඔබට අවශ්‍ය බව සැලකිල්ලට ගත යුතුය . එය විශාල රතු ධජයක් වන අතර එය යමෙකු ධාරකයාට වංචා කරයි. එබැවින් UserKnownHostFile / dev / null යනු ඇත්තෙන්ම නරක අදහසකි.

4
SSH භාවිතා කරන්නේ දුරස්ථ සම්බන්ධතා සඳහා පමණක් නොවන බව ඔබ දනී. මා සම්බන්ධ කරන සියලුම සත්කාරක සමාගම් මගේ මේසය මත ගොඩගැසී ඇති අතර එකම IP බෙදා ගනී, එබැවින් මට සෑම විටම නව සත්කාරක අනතුරු ඇඟවීමක් ඇත.
බරෆු ඇල්බිනෝ

ඔබට විශේෂිත ධාරකයෙකු සඳහා පණිවිඩය ඉවත් කිරීමට අවශ්‍ය නම්, line / .ssh / known_hosts යන පේළිය මකන්න.
stackexchanger

2
ඔබට දෝෂ නොමැතිව එක් වරක් සම්බන්ධතාවයක් කිරීමට අවශ්‍ය නම්:ssh -o UserKnownHostsFile=/dev/null
ඔඩින්හෝ - වෙල්මොන්ට්

Answers:


246

ඔබගේ ~/.ssh/config(මෙම ගොනුව නොපවතී නම්, එය සාදන්න):

Host *
    StrictHostKeyChecking no

ඔබ සම්බන්ධ කරන සියලුම සත්කාරක සඳහා මෙය අක්‍රිය කරයි. ඔබට *සමහර ධාරකයන්ට පමණක් අදාළ වීමට අවශ්‍ය නම් ඔබට ධාරක නාම රටාවක් ආදේශ කළ හැකිය .

ගොනුවේ ඇති අවසරයන් ඔබට පමණක් ප්‍රවේශ වීම සීමා කරන බවට වග බලා ගන්න:

sudo chmod 400 ~/.ssh/config

1
configමගේ නිවාස නාමාවලියෙහි කිසිදු ගොනුවක් නම් කර නොමැත .
karthick87

5
එකක් සාදන්න - ගොනුවේ සම්පූර්ණ අන්තර්ගතය ඉහත මගේ උපුටා දැක්වීමේ ඇත. එය .sshඔබගේ හෝමඩියේ උප බහලුමේ ද ඇති බව සලකන්න.
සීසියම්

ඉන්ඩෙන්ටේෂන් අවශ්‍යද? මගේ ඇතුළත් කිරීම් හිස් පේළියකින් බෙදී ඇති කොටස් මෙන් පෙනේ.
ඇන්ඩි ගිගා

4
මෙය බොහෝ අවස්ථාවලදී අ ssh -o UserKnownHostsFile=/dev/null
wise ාන ය

2
mkdir -p ~ / .ssh && echo "Host *"> ~ / .ssh / config && echo "StrictHostKeyChecking no" >> ~ / .ssh / config
147.3k

223

~/.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.
සමාගමකට

26
එය ක්‍රියා නොකරනු ඇත. එය ssh -o UserKnownHostsFile=/dev/nullඒ වෙනුවට විය යුතුය .
qwertzguy

2
wqwertzguy එය ක්‍රියාත්මක වේ. ඔබගේ විකල්පය මඟින් ධාරක යතුර සෑම අවස්ථාවකම නැති වන අතර එය ප්‍රයෝජනවත් සහ වඩා ආරක්ෂිත වේ, නමුත් ප්‍රශ්නය ඇසූ දේ නොවේ.
ජෝන් බෙන්ට්ලි

wqwertzguy ඔබට මෙය පිළිතුරක් ලෙස එකතු කළ හැකිද, ඉක්මන් 'අපිරිසිදු "සඳහා ඔබේ හොඳම දේ ඇත්තෙන්ම" මම කරන්නේ කුමක්දැයි මම දනිමි " ඔබේ පිළිතුර නින්ජා සොරකම් කිරීමට අවශ්‍ය නොවීය.
ඔඩින්හෝ - වෙල්මොන්ට්

2
මා වෙනුවෙන් කෘති දෙකම භාවිතා කරන්න, ssh -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no
netawater

117

ඔබගේ ssh වින්‍යාසය තුළ එම සැකසුම පෙන්වා දීම වටී:

StrictHostKeyChecking no

එහි අර්ථය වන්නේ සත්කාරක යතුරු .ssh / known_hosts වෙත තවමත් එකතු කර ඇති බවයි - ඔබ ඔවුන්ව විශ්වාස කරනවාද යන්න ගැන ඔබෙන් විමසනු නොලැබේ, නමුත් ධාරකයන් වෙනස් වුවහොත් ඔබට ඒ පිළිබඳව විශාල අනතුරු ඇඟවීමක් ලැබෙනු ඇතැයි මම ඔට්ටු ඇල්ලීමට කැමැත්තෙමි. තවත් පරාමිතියක් එකතු කිරීමෙන් ඔබට මෙම ගැටළුව විසඳා ගත හැකිය:

UserKnownHostsFile /dev/null

මෙමඟින් "අලුතින් සොයාගත්" ධාරකයන් සියල්ලම කුණු කූඩයට එකතු වේ. ධාරක යතුර වෙනස් වුවහොත් කරදරයක් නැත.

සත්කාරක සේවකයන් පිළිබඳ මෙම අනතුරු ඇඟවීම් මග හැරීම පැහැදිලිවම ආරක්ෂක විධිවිධාන ඇති බව සඳහන් නොකිරීමට මට මතක් වනු ඇත - ඔබ එය කරන්නේ නිවැරදි හේතු නිසා බවත් ඔබ සැබවින්ම සම්බන්ධ වන්නේ ඔබ සම්බන්ධ වීමට අදහස් කරන දේ බවත් අනිෂ්ට සත්කාරක සමාගමක්, මේ අවස්ථාවේ දී ඔබ විසඳුමක් ලෙස ssh හි ආරක්ෂාවේ ප්‍රධාන කොටසක් ඛාදනය කර ඇත.

උදාහරණයක් ලෙස ඔබ මෙය විධාන රේඛාව සමඟ සැකසීමට උත්සාහ කරන්නේ නම්, සම්පූර්ණ විධානය වනුයේ:

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

එය මෝඩකමක් වුවද - ssh වින්‍යාස ගොනු සඳහා ඉහත වැඩ කරන උදාහරණ සෑම අවස්ථාවකම වඩා අර්ථවත් වනු ඇත.


1
ඔබ නිවැරදියි, ඔබට විශාල අනතුරු ඇඟවීමක් ලැබෙනු ඇත
Freedom_Ben

1
මම හිතන්නේ මෙය නිවැරදි පිළිතුරයි. පුද්ගලික දේශීය ජාලයක ධාරකයන් සමඟ සම්බන්ධ වීමට මෙය හොඳින් ක්‍රියා කරයි.
ස්ටීව් ඩේවිස්

4
අන්වර්ථයක් තිබීම පහසු විය හැකිය ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. මගේ නඩුවේදී මම isshධාරක යතුරු වෙනස්වීම් දන්නා ධාරකයන් සමඟ සම්බන්ධ වීමට භාවිතා කරමි .
ecerulm

1
@ecerulm - කුඩා අක්ෂර වින්‍යාසයක්: එය එසේ UserKnownHostsFileනොවේ UserKnownHostFiles.
ග්‍රේ පැන්තර්

20

FYI. Cssh භාවිතා කරන විට ධාරක පරීක්ෂාව අක්‍රිය කිරීමට මම කැමැත්තෙමි.

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

csshනැත්නම් ssh?
kenorb

සමහර විට ඔහු cssh.sourceforge.net
MarkHu

මම වැරදිද, නැත්නම් දෙවැන්න -oඅනවශ්‍යද?
yckart

1
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'මා වෙනුවෙන් වැඩ කරන්න
arganzheng

10

ඔබට එක් වරකදී අක්‍රීය කිරීමට අවශ්‍ය නම්:

ssh -o UserKnownHostsFile=/dev/null

ධාරක යතුර වෙනස් වුවහොත් එයද ක්‍රියාත්මක වන අතර අමතර ආරක්ෂාව සඳහා යතුර විශ්වාසදායක ලෙස සුරැකීමට වග බලා ගනී.


6

එය කුමක් සිට වගේ ,

NoHostAuthenticationForLocalhost yes

ඔබට ප්‍රමාණවත් විය හැකිය . ඔබට තවමත් එම ආරක්‍ෂාව පවත්වා ගැනීමට හැකි වනු ඇත.


2

https://askubuntu.com/a/87452/129227 මඟින් වින්‍යාස ගොනුව වෙනස් කිරීමට යෝජනා කරයි. නමුත් ඕනෑම සත්කාරකයකු සඳහා දේවල් විවෘත කරනවා වෙනුවට මට අවශ්‍ය වූයේ මෙය එක් සත්කාරක සමාගමකට සිදු කිරීමයි. ක්‍රියාවලිය ස්වයංක්‍රීය කිරීමට පහත පිටපත උපකාරී වේ:

උදාහරණ ඇමතුම

./sshchek 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() {
#/ubuntu/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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.