Ich möchte das strikte Einchecken ssh
von Hostschlüsseln für Ubuntu 11.04 deaktivieren . Wie es geht?
ssh -o UserKnownHostsFile=/dev/null
Ich möchte das strikte Einchecken ssh
von Hostschlüsseln für Ubuntu 11.04 deaktivieren . Wie es geht?
ssh -o UserKnownHostsFile=/dev/null
Antworten:
In Ihrem ~/.ssh/config
(falls diese Datei nicht existiert, erstellen Sie sie einfach):
Host *
StrictHostKeyChecking no
Dadurch wird es für alle Hosts deaktiviert, zu denen Sie eine Verbindung herstellen. Sie können das *
Muster durch ein Hostnamenmuster ersetzen, wenn Sie nur möchten, dass es auf einige Hosts angewendet wird .
Stellen Sie sicher, dass die Berechtigungen für die Datei den Zugriff nur auf Sie selbst beschränken:
sudo chmod 400 ~/.ssh/config
config
In meinem Home-Verzeichnis befindet sich keine Datei mit dem Namen .
.ssh
Unterverzeichnis Ihres Homedir befindet.
ssh -o UserKnownHostsFile=/dev/null
Anstatt es ~/.ssh/config
für alle Hosts * zu Ihrer Datei hinzuzufügen , ist es sicherer, einen bestimmten Host anzugeben.
Sie können auch einen Parameter in der Befehlszeile wie folgt übergeben:
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
stattdessen sein.
Es lohnt sich darauf hinzuweisen, dass die Einstellung in Ihrer SSH-Konfiguration:
StrictHostKeyChecking no
Bedeutet, dass Hostkeys immer noch zu .ssh / known_hosts hinzugefügt werden - Sie werden nur nicht gefragt, ob Sie ihnen vertrauen. Sollten sich die Hosts ändern, wette ich, dass Sie eine große Warnung erhalten. Sie können dieses Problem umgehen, indem Sie einen weiteren Parameter hinzufügen:
UserKnownHostsFile /dev/null
Dadurch werden alle diese "neu entdeckten" Hosts in den Papierkorb verschoben. Wenn sich ein Hostschlüssel ändert, treten keine Probleme auf.
Ich möchte nicht erwähnen, dass das Umgehen dieser Warnungen auf Hostschlüsseln offensichtliche Auswirkungen auf die Sicherheit hat. Sie sollten darauf achten, dass Sie dies aus den richtigen Gründen tun und dass das, mit dem Sie sich verbinden, das ist, mit dem Sie sich verbinden und nicht ein bösartiger Host, da Sie zu diesem Zeitpunkt einen Großteil der Sicherheit in ssh als Lösung untergraben haben.
Wenn Sie beispielsweise versuchen, dies über die Befehlszeile festzulegen, lautet der vollständige Befehl:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
Das wäre allerdings albern, da die obigen Arbeitsbeispiele für ssh-Konfigurationsdateien wahrscheinlich in allen Fällen sinnvoller sind.
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. In meinem Fall verbinde ich mich issh
mit Hosts, bei denen ich weiß, dass sich der Hostschlüssel ändert.
UserKnownHostsFile
nicht UserKnownHostFiles
.
Zu Ihrer Information. Ich bevorzuge es, die Host-Überprüfung nur bei Verwendung von cssh zu deaktivieren.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
cssh
oder ssh
?
-o
unnötig?
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
Arbeit für mich
https://askubuntu.com/a/87452/129227 schlagen vor, die Konfigurationsdatei zu ändern, was hilft. Aber anstatt die Dinge für irgendeinen Host zu öffnen, wollte ich, dass dies für jeden Host gemacht wird. Das folgende Skript hilft bei der Automatisierung des Prozesses:
Beispielanruf
./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