Question Comment désactiver la vérification stricte de la clé de l'hôte dans ssh?


Je voudrais désactiver la vérification stricte de la clé de l'hôte ssh pour Ubuntu 11.04. Comment faire?


163
2017-12-13 14:58


origine


Salut karthick87, j'espère que vous comprenez les implications de sécurité de ce changement;) - Panther
Il faut noter cependant que vous vouloir pour savoir si une clé hôte a modifié. C'est un grand drapeau rouge indiquant que quelqu'un peut usurper l'identité de l'hôte. Donc, UserKnownHostFile / dev / null est une très mauvaise idée.
SSH est utilisé non seulement pour les connexions à distance, vous savez. Tous les hôtes auxquels je me connecte sont en tas sur ma table et partagent la même adresse IP. J'ai donc toujours le nouvel avertissement sur l'hôte. - Barafu Albino
Si vous souhaitez simplement supprimer le message pour un hôte particulier, supprimez la ligne correspondante ~ / .ssh / known_hosts. - stackexchanger
Si vous avez juste besoin de faire une connexion unique sans erreurs: ssh -o UserKnownHostsFile=/dev/null - odinho - Velmont


Réponses:


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

Host *
    StrictHostKeyChecking no

Cela l'éteindra pour tous les hôtes auxquels vous vous connectez. Vous pouvez remplacer le * avec un modèle de nom d'hôte si vous voulez seulement qu'il s'applique à certains hôtes.

Assurez-vous que les autorisations sur le fichier ne vous limitent que:

sudo chmod 400 ~/.ssh/config

182
2017-12-13 15:16



Il n'y a pas de fichier nommé config dans mon répertoire personnel - karthick87
Faites-en un - le contenu entier du fichier se trouve dans ma citation ci-dessus. Notez qu'il est dans le .ssh sous-répertoire de votre homedir également. - Caesium
L'indentation est-elle requise? Mes entrées ressemblent à des blocs divisés par une ligne vide. - Andi Giga
Ceci est imprudent dans de nombreux cas, souvent vous voulez juste le désactiver une fois: ssh -o UserKnownHostsFile=/dev/null - odinho - Velmont
mkdir -p ~ / .ssh && echo "Hôte *"> ~ / .ssh / config && echo "StrictHostKeyChecking no" >> ~ / .ssh / config - Sankarganesh Eswaran


Plutôt que de l'ajouter à votre ~/.ssh/config fichier pour tout hôte *, 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 ceci:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com

141
2017-07-25 01:27



Notez que vous n'avez généralement besoin de le faire qu'une fois par hôte car il le dit la première fois: Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts. - MarkHu
Cela ne marchera pas. CA devrait etre ssh -o UserKnownHostsFile=/dev/null au lieu. - qwertzguy
@qwertzguy Ca marche. Votre option fera en sorte que la clé hôte est perdue à chaque fois, ce qui est utile et plus sûr, mais pas ce que la question demande. - Jon Bentley
@qwertzguy Pourriez-vous ajouter ceci comme réponse, le vôtre est vraiment le meilleur pour quick'n'dirty "connectez-vous juste je sais ce que je fais"? Je ne voulais pas voler ta réponse. - odinho - Velmont
@ odinho-velmont fait - qwertzguy


Il convient de souligner que:

StrictHostKeyChecking no

Cela signifie que les hostkeys sont toujours ajoutées à .ssh / known_hosts - vous ne serez pas invité à savoir si vous leur faites confiance, mais si les hôtes changent, je suis prêt à parier que vous en serez averti. Vous pouvez contourner ce problème en ajoutant un autre paramètre:

UserKnownHostsFile /dev/null

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

Je m'en voudrais de ne pas mentionner que contourner ces avertissements sur les clés d’accueil a des ramifications de sécurité évidentes - vous devez faire attention à ce que vous le fassiez pour les bonnes raisons et que vous vous connectiez réellement est Ce que vous voulez dire pour vous connecter et non un hôte malveillant.


80
2017-12-02 23:25



Vous avez raison, vous recevez le grand avertissement - Freedom_Ben
Je pense que c'est la bonne réponse. Cela fonctionne bien pour la connexion aux hôtes sur un réseau local privé. - Steve Davis
Pourrait être pratique d'avoir un alias pour ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. Dans mon cas, j'utilise issh pour se connecter aux hôtes où je connais les modifications de la clé de l'hôte. - ecerulm
@ecerulm - juste une petite faute de frappe: c'est UserKnownHostsFile ne pas UserKnownHostFiles. - Grey Panther


FYI. Je préfère désactiver la vérification des hôtes lors de l’utilisation de cssh.

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

15
2017-07-18 18:01



cssh ou ssh? - kenorb
Peut-être qu'il utilise cssh.sourceforge.net - MarkHu
Ai-je tort ou est le deuxième -o inutile? - yckart
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222' travaille pour moi - arganzheng


Si vous souhaitez désactiver sur une base unique, utilisez:

ssh -o UserKnownHostsFile=/dev/null

Cela fonctionnera également si la clé de l'hôte change et s'assurera de ne pas enregistrer la clé comme fiable pour plus de sécurité.


6
2017-08-29 15:55





De quoi ressemble à,

NoHostAuthenticationForLocalhost yes

peut être assez bien pour vous. ET vous pourrez toujours maintenir ce semblant de sécurité.


4
2017-07-23 20:20





https://askubuntu.com/a/87452/129227 suggérer de modifier le fichier de configuration qui aide. Mais au lieu d'ouvrir les choses pour n'importe quel hôte, je voulais que cela soit fait 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='\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