Vraag Hoe een strenge controle van de hostsleutel in ssh uit te schakelen?


Ik wil strenge hostsleutelinchecken uitschakelen ssh voor Ubuntu 11.04. Hoe je dat doet?


163
2017-12-13 14:58


oorsprong


Hallo karthick87, ik hoop dat je de veiligheidsimplicaties begrijpt van het maken van die verandering;) - Panther
Het moet echter worden opgemerkt dat u willen om te weten of een hostsleutel heeft veranderd. Dat is een grote rode vlag die iemand de gastheer kan misleiden. Dus UserKnownHostFile / dev / null is een heel slecht idee.
SSH wordt niet alleen gebruikt voor externe verbindingen, weet u. Alle hosts waarmee ik verbinding maak zijn in de heap op mijn tafel en delen dezelfde IP, dus ik heb altijd de nieuwe host-waarschuwing. - Barafu Albino
Als u alleen het bericht voor een bepaalde host wilt verwijderen, verwijdert u de bijbehorende regel ~ / .ssh / known_hosts. - stackexchanger
Als je gewoon een eenmalige verbinding zonder fouten moet maken: ssh -o UserKnownHostsFile=/dev/null - odinho - Velmont


antwoorden:


In uw ~/.ssh/config (als dit bestand niet bestaat, maakt u het gewoon):

Host *
    StrictHostKeyChecking no

Hiermee wordt het uitgeschakeld voor alle hosts waarmee u verbinding maakt. U kunt de * met een hostname-patroon als je alleen wilt dat het op sommige hosts van toepassing is.

Zorg ervoor dat de rechten op het bestand de toegang tot jezelf alleen beperken:

sudo chmod 400 ~/.ssh/config

182
2017-12-13 15:16



Er is geen bestand met de naam config in mijn thuismap. - karthick87
Maak er een - de volledige inhoud van het bestand staat in mijn citaat hierboven. Merk op dat het in de .ssh submap van uw homedir. - Caesium
Is de inspringing vereist? Mijn invoer ziet eruit als blokken gedeeld door een lege regel. - Andi Giga
Dit is in veel gevallen niet verstandig, vaak wilt u het gewoon een keer uitschakelen: ssh -o UserKnownHostsFile=/dev/null - odinho - Velmont
mkdir -p ~ / .ssh && echo "Host *"> ~ / .ssh / config && echo "StrictHostKeyChecking no" >> ~ / .ssh / config - Sankarganesh Eswaran


In plaats van het toe te voegen aan uw ~/.ssh/config bestand voor alle Host *, zou het veiliger zijn om een ​​bepaalde host op te geven.

U kunt ook een parameter op de opdrachtregel als volgt doorgeven:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com

141
2017-07-25 01:27



Merk op dat u dit over het algemeen maar één keer per host hoeft te doen, omdat dit de eerste keer dit zegt: Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts. - MarkHu
Dat zal niet werken. Het zou moeten zijn ssh -o UserKnownHostsFile=/dev/null in plaats daarvan. - qwertzguy
@qwertzguy Het werkt. Uw optie zorgt ervoor dat de host-sleutel elke keer verloren gaat, wat handig en veiliger is, maar niet wat de vraag is. - Jon Bentley
@qwertzguy Kon je dit als antwoord toevoegen, de jouwe is echt het beste voor quick'n'dirty "connecteer gewoon, ik weet wat ik aan het doen ben"? Ik wilde je antwoord niet ninja-stelen. - odinho - Velmont
@ odinho-velmont gedaan - qwertzguy


Het is de moeite waard erop te wijzen dat:

StrictHostKeyChecking no

Betekent dat hostkeys nog steeds worden toegevoegd aan .ssh / known_hosts - je zult niet gevraagd worden of je ze vertrouwt, maar hosts moeten veranderen. Ik durf te wedden dat je de grote waarschuwing krijgt. U kunt dit probleem omzeilen door een andere parameter toe te voegen:

UserKnownHostsFile /dev/null

Dit zal al deze "nieuw ontdekte" hosts toevoegen aan de prullenbak. Als een hostsleutel verandert, geen problemen.

Ik zou niet nalaten om te vermelden dat het omzeilen van deze waarschuwingen op hostkeys duidelijke veiligheidsverklaringen heeft - je moet oppassen dat je het doet om de juiste redenen en dat waar je mee bezig bent eigenlijk is wat je bedoelt om verbinding mee te maken en geen kwaadaardige host.


80
2017-12-02 23:25



Je hebt gelijk, je krijgt de grote waarschuwing - Freedom_Ben
Ik denk dat dit het juiste antwoord is. Dit werkt goed voor het verbinden met hosts op een privé lokaal netwerk. - Steve Davis
Zou handig zijn om een ​​alias te hebben ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. In mijn geval gebruik ik issh om verbinding te maken met hosts waarvan ik weet dat de hostsleutel verandert. - ecerulm
@ecerulm - slechts een kleine typfout: het is UserKnownHostsFile niet UserKnownHostFiles. - Grey Panther


TER INFO. Ik geef de voorkeur aan het uitschakelen van de hostcontrole, gewoon wanneer ik cssh gebruik.

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

15
2017-07-18 18:01



cssh of ssh? - kenorb
Misschien gebruikt hij cssh.sourceforge.net - MarkHu
Heb ik het mis, of is de tweede -o onnodig? - yckart
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222' werk voor mij - arganzheng


Als je het op eenmalige basis wilt uitschakelen, gebruik je:

ssh -o UserKnownHostsFile=/dev/null

Dat werkt ook als de hostsleutel verandert en ervoor zorgt dat de sleutel niet als vertrouwd wordt opgeslagen voor extra beveiliging.


6
2017-08-29 15:55





Van wat het is klinkt als,

NoHostAuthenticationForLocalhost yes

kan zijn goed genoeg, voor jou. EN je zou nog steeds die schijn van veiligheid kunnen behouden.


4
2017-07-23 20:20





https://askubuntu.com/a/87452/129227 stel voor om het configuratiebestand te wijzigen dat helpt. Maar in plaats van dingen open te stellen voor elke host wilde ik dit per host doen. Het onderstaande script helpt bij het automatiseren van het proces:

voorbeeld gesprek

./sshcheck somedomain site1 site2 site3

sshcheck-script

#!/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

1
2017-08-25 12:43