Bonjour karthick87, j'espère que vous comprenez les implications de ce changement pour la sécurité;)
Panther
1
Notez toutefois que vous souhaitez savoir si une clé d’hôte a été modifiée . C’est un grand drapeau rouge que quelqu'un peut usurper l’hôte. Donc, UserKnownHostFile / dev / null est une très mauvaise idée.
4
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 l'avertissement du nouvel hôte.
Barafu Albino
Si vous souhaitez uniquement supprimer le message d'un hôte particulier, supprimez la ligne correspondante ~ / .ssh / known_hosts.
stackexchanger
2
Si vous avez juste besoin de faire une connexion unique sans erreurs:ssh -o UserKnownHostsFile=/dev/null
odinho - Velmont
Réponses:
227
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:
Il n'y a pas de fichier nommé configdans mon répertoire personnel.
karthick87
4
Make one - tout le contenu du fichier se trouve dans ma citation ci-dessus. Notez qu'il se trouve également dans le .sshsous - répertoire de votre répertoire personnel.
Cesium
L'indentation est-elle requise? Mes entrées ressemblent à des blocs divisés par une ligne vide.
Andi Giga
4
C’est imprudent dans de nombreux cas, vous voulez souvent le désactiver une seule fois:ssh -o UserKnownHostsFile=/dev/null
Notez que vous n'avez généralement besoin de le faire qu'une fois par hôte, car il le dit pour la première fois:Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
MarkHu
24
Ça ne marchera pas. Cela devrait être à la ssh -o UserKnownHostsFile=/dev/nullplace.
Qwertzguy
1
@qwertzguy Cela fonctionne. Votre option fera en sorte que la clé de l'hôte soit perdue à chaque fois, ce qui est utile et plus sécurisé, mais pas ce que la question a demandé.
Jon Bentley
@qwertzguy Pourriez-vous ajouter cela comme réponse, le vôtre est vraiment le meilleur pour quick'n'dirty "connectez-vous je sais ce que je fais"? Je ne voulais pas que votre réponse soit volée par un ninja.
odinho - Velmont
@ odinho-velmont done
qwertzguy
106
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:
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.
Vous avez raison, vous obtenez le grand avertissement
Freedom_Ben
1
Je pense que c'est la bonne réponse. Cela fonctionne bien pour se connecter à des hôtes sur un réseau local privé.
Steve Davis
4
Pourrait être pratique d'avoir un alias à ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. Dans mon cas, je me isshconnecte à des hôtes sur lesquels je connais les modifications apportées à la clé de l'hôte.
ecerulm
1
@ecerulm - juste une petite faute de frappe: ce n'est UserKnownHostsFilepas UserKnownHostFiles.
Grey Panther
20
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'
Est-ce que je me trompe ou la seconde est-elle -oinutile?
Yckart
1
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] -p 2222'travaille pour moi
arganzheng
9
Si vous souhaitez désactiver l’utilisation unique:
ssh -o UserKnownHostsFile=/dev/null
Cela fonctionnera également si la clé de l'hôte change et fera en sorte de ne pas enregistrer la clé en tant que clé de confiance pour plus de sécurité.
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
esacfi}## check all servers#
checkservers(){
me=$(hostname -f)for server in $(echo $*| sort)do
os=`uname`case $os in# Mac OS XDarwin*)
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"fidone}## check configuration#
checkconfig(){#https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-sshif[-f $sconfig ]then
color_msg $green "$sconfig exists"
ls -l $sconfig
fi}
sconfig=~/.ssh/config
case $# in0) usage ;;1) usage ;;*)
domain=$1
shift
color_msg $blue "checking ssh configuration for domain $domain sites $*"
checkconfig
checkservers $*;;esac
ssh -o UserKnownHostsFile=/dev/null
Réponses:
Dans votre
~/.ssh/config
(si ce fichier n'existe pas, créez-le):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:
la source
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:
la source
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:
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:
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:
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.
la source
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. Dans mon cas, je meissh
connecte à des hôtes sur lesquels je connais les modifications apportées à la clé de l'hôte.UserKnownHostsFile
pasUserKnownHostFiles
.FYI. Je préfère désactiver la vérification d'hôte lors de l'utilisation de cssh.
la source
cssh
oussh
?-o
inutile?alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] -p 2222'
travaille pour moiSi vous souhaitez désactiver l’utilisation unique:
Cela fonctionnera également si la clé de l'hôte change et fera en sorte de ne pas enregistrer la clé en tant que clé de confiance pour plus de sécurité.
la source
D'après ce que cela ressemble ,
peut être assez bon pour vous. ET vous seriez toujours en mesure de maintenir cet semblant de sécurité.
la source
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
la source