Me gustaría deshabilitar el registro estricto de la clave de host ssh
para Ubuntu 11.04. ¿Cómo hacerlo?
ssh -o UserKnownHostsFile=/dev/null
Me gustaría deshabilitar el registro estricto de la clave de host ssh
para Ubuntu 11.04. ¿Cómo hacerlo?
ssh -o UserKnownHostsFile=/dev/null
Respuestas:
En su ~/.ssh/config
(si este archivo no existe, solo créelo):
Host *
StrictHostKeyChecking no
Esto lo desactivará para todos los hosts a los que se conecte. Puede reemplazarlo *
con un patrón de nombre de host si solo desea que se aplique a algunos hosts.
Asegúrese de que los permisos en el archivo restrinjan el acceso solo a usted:
sudo chmod 400 ~/.ssh/config
config
en mi directorio de inicio.
.ssh
subdirectorio de su homedir.
ssh -o UserKnownHostsFile=/dev/null
En lugar de agregarlo a su ~/.ssh/config
archivo para todos los Host *, sería más seguro especificar un host en particular.
También puede pasar un parámetro en la línea de comandos como este:
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
en su lugar.
Vale la pena señalar esa configuración en su configuración ssh:
StrictHostKeyChecking no
Significará que aún se agregan teclas de host a .ssh / known_hosts: simplemente no se le preguntará si confía en ellos, pero si los hosts cambian, estoy dispuesto a apostar que recibirá una gran advertencia al respecto. Puede solucionar este problema agregando otro parámetro:
UserKnownHostsFile /dev/null
Esto agregará todos estos hosts "recién descubiertos" a la papelera. Si cambia una clave de host, no hay problemas.
Sería negligente no mencionar que eludir estas advertencias en las teclas de host tiene ramificaciones de seguridad obvias: debe tener cuidado de hacerlo por las razones correctas y de que a lo que se está conectando realmente es a lo que se quiere conectar y no un host malicioso, ya que en este punto ha erosionado una gran parte de la seguridad en ssh como solución.
Por ejemplo, si intentara configurar esto con la línea de comando, el comando completo sería:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
Sin embargo, eso sería una tontería, dado que los ejemplos de trabajo anteriores para los archivos de configuración ssh probablemente tengan más sentido en todos los casos.
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. En mi caso, utilizo issh
para conectarme a hosts donde sé que la clave del host cambia.
UserKnownHostsFile
no UserKnownHostFiles
.
FYI. Prefiero deshabilitar la comprobación de host solo cuando uso cssh.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
cssh
o ssh
?
-o
innecesario?
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
trabaja para mí
https://askubuntu.com/a/87452/129227 sugiere modificar el archivo de configuración que ayuda. Pero en lugar de abrir las cosas para cualquier host, quería que esto se hiciera por host. El siguiente script ayuda a automatizar el proceso:
llamada de ejemplo
./sshcheck somedomain sitio1 sitio2 sitio3
secuencia de comandos 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