Je souhaite désactiver la vérification stricte de la clé d’hôte ssh
pour Ubuntu 11.04. Comment faire?
ssh -o UserKnownHostsFile=/dev/null
Je souhaite désactiver la vérification stricte de la clé d’hôte ssh
pour Ubuntu 11.04. Comment faire?
ssh -o UserKnownHostsFile=/dev/null
Réponses:
Dans votre ~/.ssh/config
(si ce fichier n'existe pas, créez-le):
Host *
StrictHostKeyChecking no
Cela l'éteindra pour tous les hôtes auxquels vous vous connecterez. Vous pouvez remplacer le *
modèle par un nom d'hôte si vous souhaitez qu'il s'applique uniquement à certains hôtes.
Assurez-vous que les autorisations sur le fichier limitent l'accès à vous-même:
sudo chmod 400 ~/.ssh/config
config
dans mon répertoire personnel.
.ssh
sous - répertoire de votre répertoire personnel.
ssh -o UserKnownHostsFile=/dev/null
Plutôt que de l'ajouter à votre ~/.ssh/config
fichier 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 ceci:
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
place.
Cela vaut la peine de souligner ce paramètre dans votre configuration ssh:
StrictHostKeyChecking no
Cela signifie que les clés hôtes sont toujours ajoutées à .ssh / known_hosts - on ne vous demandera pas si vous leur faites 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
Cela 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 à le faire pour les bonnes raisons et à ce que vous vous connectez est ce que vous voulez réellement connecter et non. un hôte malveillant, car à ce stade, vous avez érodé une partie importante de la sécurité dans ssh en tant que solution.
Par exemple, si vous essayez de définir ceci avec la ligne de commande, la commande complète serait:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
Ce serait idiot cependant - étant donné que les exemples de travail ci-dessus pour les fichiers de configuration SSH auront probablement plus de sens dans tous les cas.
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. Dans mon cas, je me issh
connecte à des hôtes sur lesquels je connais les modifications apportées à la clé de l'hôte.
UserKnownHostsFile
pas UserKnownHostFiles
.
FYI. 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'
cssh
ou ssh
?
-o
inutile?
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
travaille pour moi
https://askubuntu.com/a/87452/129227 suggère de modifier le fichier de configuration, ce qui aide. 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='\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