Hola karthick87, espero que entiendas las implicaciones de seguridad de hacer ese cambio;)
Panther
1
Sin embargo, debe tenerse en cuenta que desea saber si una clave de host ha cambiado . Esa es una gran bandera roja de que alguien puede estar falsificando el host. Entonces UserKnownHostFile / dev / null es una muy mala idea.
44
SSH se usa no solo para conexiones remotas, ya sabes. Todos los hosts a los que me conecto están en mi mesa y comparten la misma IP, por lo que siempre tengo la nueva advertencia de host.
Barafu Albino
Si solo desea eliminar el mensaje de un host en particular, elimine la línea correspondiente ~ / .ssh / known_hosts.
stackexchanger
2
Si solo necesita hacer una conexión única sin errores:ssh -o UserKnownHostsFile=/dev/null
odinho - Velmont
Respuestas:
227
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:
Tenga en cuenta que generalmente solo necesita hacer esto una vez por host ya que dice esto la primera vez:Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
MarkHu
24
Eso no funcionará. Debería ser ssh -o UserKnownHostsFile=/dev/nullen su lugar.
qwertzguy
1
@qwertzguy Funciona. Su opción hará que se pierda la clave de host cada vez, lo cual es útil y más seguro, pero no lo que la pregunta solicitó.
Jon Bentley
@qwertzguy ¿Podría agregar esto como respuesta, la suya es realmente la mejor para quick'n'dirty "solo conéctese Sé lo que estoy haciendo"? No quería robar ninja tu respuesta.
odinho - Velmont
@ odinho-velmont hecho
qwertzguy
106
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:
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.
Creo que esta es la respuesta correcta. Esto funciona bien para conectarse a hosts en una red local privada.
Steve Davis
44
Podría ser conveniente tener un alias para ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. En mi caso, utilizo isshpara conectarme a hosts donde sé que la clave del host cambia.
Ecerulm
1
@ecerulm - sólo una pequeña errata: es UserKnownHostsFileno UserKnownHostFiles.
Grey Panther
20
FYI. Prefiero deshabilitar la comprobación de host solo cuando uso cssh.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
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
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
Respuestas:
En su
~/.ssh/config
(si este archivo no existe, solo créelo):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:
fuente
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:
fuente
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:
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:
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:
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.
fuente
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. En mi caso, utilizoissh
para conectarme a hosts donde sé que la clave del host cambia.UserKnownHostsFile
noUserKnownHostFiles
.FYI. Prefiero deshabilitar la comprobación de host solo cuando uso cssh.
fuente
cssh
ossh
?-o
innecesario?alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] -p 2222'
trabaja para míSi desea deshabilitar una vez, use:
Eso también funcionará si la clave del host cambia y se asegurará de no guardar la clave como confiable para mayor seguridad.
fuente
Por lo que parece ,
puede ser lo suficientemente bueno para ti. Y aún sería capaz de mantener esa apariencia de seguridad.
fuente
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
fuente