Vorrei disabilitare il controllo rigoroso della chiave host ssh
per Ubuntu 11.04. Come farlo?
ssh -o UserKnownHostsFile=/dev/null
Vorrei disabilitare il controllo rigoroso della chiave host ssh
per Ubuntu 11.04. Come farlo?
ssh -o UserKnownHostsFile=/dev/null
Risposte:
Nel tuo ~/.ssh/config
(se questo file non esiste, crealo):
Host *
StrictHostKeyChecking no
Questo lo disattiverà per tutti gli host a cui ti connetti. È possibile sostituire il *
modello con un nome host se si desidera che si applichi solo ad alcuni host.
Assicurati che le autorizzazioni sul file limitino l'accesso solo a te stesso:
sudo chmod 400 ~/.ssh/config
config
nella mia directory home.
.ssh
sottodirectory del tuo homedir.
ssh -o UserKnownHostsFile=/dev/null
Invece di aggiungerlo al tuo ~/.ssh/config
file per tutti gli host *, sarebbe più sicuro specificare un determinato host.
Puoi anche passare un parametro dalla riga di comando in questo modo:
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
invece.
Vale la pena sottolineare questa impostazione nella tua configurazione SSH:
StrictHostKeyChecking no
Significa che le hostkey vengono ancora aggiunte a .ssh / known_hosts - semplicemente non ti verrà chiesto se ti fidi di loro, ma se gli host cambiano, sono disposto a scommettere che riceverai il grande avviso a riguardo. È possibile aggirare questo problema aggiungendo un altro parametro:
UserKnownHostsFile /dev/null
Ciò aggiungerà tutti questi host "appena scoperti" al cestino. Se una chiave host cambia, nessun problema.
Non vorrei dimenticare che eludere questi avvisi sulle hostkeys ha evidenti implicazioni di sicurezza: dovresti stare attento a farlo per le giuste ragioni e che ciò a cui ti stai connettendo in realtà è ciò che intendi connettere e non un host dannoso, poiché a questo punto hai eroso gran parte della sicurezza in ssh come soluzione.
Ad esempio, se dovessi provare a impostarlo con la riga di comando, il comando completo sarebbe:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
Sarebbe sciocco però - dato che gli esempi di lavoro sopra per i file di configurazione ssh avranno probabilmente più senso in tutti i casi.
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. Nel mio caso, mi issh
collego agli host in cui so che la chiave dell'host cambia.
UserKnownHostsFile
è UserKnownHostFiles
.
PER TUA INFORMAZIONE. Preferisco disabilitare il controllo host solo quando si usa cssh.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
cssh
o ssh
?
-o
non è necessario?
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
lavoro per me
https://askubuntu.com/a/87452/129227 suggerisce di modificare il file di configurazione che aiuta. Ma invece di aprire le cose per qualsiasi host, volevo che fosse fatto per host. Lo script seguente aiuta ad automatizzare il processo:
chiamata di esempio
./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