Comment désactiver la vérification stricte des clés d'hôte dans ssh?

176

Je voudrais désactiver la vérification stricte des clés d’hôte dans ssh pour Ubuntu 11.04. Comment le faire?

    
posée karthick87 13.12.2011 - 15:58
la source

7 réponses

192

Dans votre ~/.ssh/config (si ce fichier n'existe pas, créez-le simplement):

Host *
    StrictHostKeyChecking no

Ceci désactivera tous les hôtes auxquels vous vous connecterez. Vous pouvez remplacer le * par un modèle de nom d’hôte si vous ne souhaitez qu’il s’applique à certains hôtes.

Assurez-vous que les autorisations sur le fichier limitent l'accès à vous-même uniquement:

sudo chmod 400 ~/.ssh/config
    
réponse donnée Caesium 13.12.2011 - 16:16
la source
148

Plutôt que de l'ajouter à votre fichier ~/.ssh/config pour tous les hôtes *, il serait plus sûr de spécifier un hôte particulier.

Vous pouvez également passer un paramètre sur la ligne de commande, comme suit:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com
    
réponse donnée MarkHu 25.07.2012 - 03:27
la source
84

Cela vaut la peine de souligner que:

StrictHostKeyChecking no

Cela signifie que les clés hôtes sont toujours ajoutées à .ssh / known_hosts - vous ne serez pas simplement informés de votre confiance, mais si les hôtes changent, je suis prêt à parier que vous aurez le plus grand avertissement à ce sujet. Vous pouvez contourner ce problème en ajoutant un autre paramètre:

UserKnownHostsFile /dev/null

Ceci ajoutera tous ces hôtes "nouvellement découverts" à la corbeille. Si une clé d’hôte change, pas de problèmes.

Je m'en voudrais de ne pas mentionner le fait que contourner ces avertissements sur les hostkeys a des ramifications de sécurité évidentes - vous devez faire attention à ne pas le faire pour les bonnes raisons. que ce à quoi vous vous connectez est en fait ce que vous voulez dire, et non un hôte malveillant.

    
réponse donnée pacifist 03.12.2013 - 00:25
la source
16

Pour votre information. Je préfère désactiver la vérification d'hôte lors de l'utilisation de cssh.

alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
    
réponse donnée Kyle 18.07.2013 - 20:01
la source
6

Si vous souhaitez désactiver l’utilisation ponctuelle:

ssh -o UserKnownHostsFile=/dev/null

Cela fonctionnera également si la clé de l'hôte change et veillera à ne pas enregistrer la clé en tant que clé de confiance pour plus de sécurité.

    
réponse donnée qwertzguy 29.08.2017 - 17:55
la source
4

D'après ce que cela ressemble à ,

NoHostAuthenticationForLocalhost yes

peut-être assez bien pour vous. ET vous seriez toujours en mesure de maintenir cet semblant de sécurité.

    
réponse donnée alex gray 23.07.2015 - 22:20
la source
1
Le

lien suggère de modifier le fichier de configuration, ce qui est utile. Mais au lieu d’ouvrir les choses à un hôte, je voulais que cela se fasse par hôte. Le script ci-dessous aide à automatiser le processus:

exemple d'appel

./ sshcheck somedomain site1 site2 site3

script 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='3[0;34m'  
red='3[0;31m'  
green='3[0;32m' # '\e[1;32m' is too bright for white bg.
endColor='3[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://ubuntuplace.info/questions/795/how-to-disable-strict-host-key-checking-in-ssh"$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
    
réponse donnée Wolfgang Fahl 25.08.2017 - 14:43
la source

Lire d'autres questions sur les étiquettes