Привет karthick87, я надеюсь, что ты понимаешь последствия этих изменений для безопасности;)
Panther
1
Однако следует отметить, что вы хотите знать, изменился ли ключ хоста . Это большой красный флаг, который кто-то может подделывать хозяину. Так что UserKnownHostFile / dev / null - действительно плохая идея.
4
Знаете, SSH используется не только для удаленных подключений. Все хосты, к которым я подключаюсь, находятся в куче на моей таблице и имеют один и тот же IP-адрес, поэтому у меня всегда появляется предупреждение о новом хосте.
Барафу Альбино
Если вы просто хотите удалить сообщение для определенного хоста, удалите соответствующую строку ~ / .ssh / known_hosts.
stackexchanger
2
Если вам просто нужно сделать одноразовое соединение без ошибок:ssh -o UserKnownHostsFile=/dev/null
Одино - Велмонт
Ответы:
227
В вашем ~/.ssh/config(если этот файл не существует, просто создайте его):
Host *
StrictHostKeyChecking no
Это отключит его для всех хостов, к которым вы подключаетесь. Вы можете заменить *шаблон имени хоста, если хотите, чтобы он применялся только к некоторым хостам.
Убедитесь, что права доступа к файлу ограничивают доступ только для вас:
Обратите внимание, что вам, как правило, нужно делать это только один раз для каждого хоста, поскольку он говорит об этом в первый раз:Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
MarkHu
24
Это не сработает. Это должно быть ssh -o UserKnownHostsFile=/dev/nullвместо.
qwertzguy
1
@qwertzguy Это работает. Ваш выбор сделает так, чтобы ключ хоста терялся каждый раз, что полезно и более безопасно, но не то, о чем спрашивал вопрос.
Джон Бентли
@qwertzguy Не могли бы вы добавить это в качестве ответа, ваш действительно лучший для quick'n'dirty "просто подключиться, я знаю, что я делаю"? Не хотел ниндзя украсть твой ответ.
Одино - Велмонт
@ odinho-velmont done
qwertzguy
106
Стоит указать на эту настройку в вашей конфигурации ssh:
StrictHostKeyChecking no
Будет означать, что ключи хоста все еще добавляются в .ssh / known_hosts - вас просто не спросят, доверяете ли вы им, но если хост поменяется, я готов поспорить, что вы получите большое предупреждение об этом. Вы можете обойти эту проблему, добавив еще один параметр:
UserKnownHostsFile /dev/null
Это добавит все эти "недавно обнаруженные" хосты в корзину. Если ключ хоста меняется, никаких проблем.
Я бы непростительно , не говоря уже о том , что обойти эти предупреждения на hostkeys имеет очевидные последствия безопасности - вы должны быть осторожны , что вы делаете это по правильным причинам и то , что вы подключаетесь на самом деле является то , что вы имеете в виду , чтобы подключиться и не злонамеренный хост, поскольку в этот момент вы разрушили основную часть безопасности в ssh как решение.
Например, если вы попытаетесь установить это с помощью командной строки, полная команда будет выглядеть так:
Хотя это было бы глупо - учитывая, что приведенные выше рабочие примеры для файлов конфигурации ssh, вероятно, будут иметь больше смысла во всех случаях.
Я думаю, что это правильный ответ. Это хорошо работает для подключения к хостам в частной локальной сети.
Стив Дэвис,
4
Может быть удобно иметь псевдоним для ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. В моем случае я использую isshдля подключения к хостам, где я знаю изменения ключа хоста.
ecerulm
1
@ecerulm - просто небольшая опечатка: это UserKnownHostsFileне так UserKnownHostFiles.
Серая пантера
20
FYI. Я предпочитаю отключать проверку хоста только при использовании cssh.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
https://askubuntu.com/a/87452/129227 предлагают изменить файл конфигурации, который помогает. Но вместо того, чтобы открывать вещи для любого хоста, я хотел, чтобы это было сделано для каждого хоста. Сценарий ниже помогает автоматизировать процесс:
пример вызова
./sshcheck somedomain site1 site2 site3
скрипт 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/nullif[ $?-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 "">> $sconfigelse
color_msg $green "$l_server found in $sconfig"fi
ssh -q $l_server id >/dev/nullif[ $?-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 answercase $answer in
y|yes) ssh-copy-id $l_serveresacfi}## 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/nullif[ $?-eq 1]then
checkserver $server
checkserver $server.$domainelse
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 $sconfigfi}
sconfig=~/.ssh/configcase $# 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
Ответы:
В вашем
~/.ssh/config
(если этот файл не существует, просто создайте его):Это отключит его для всех хостов, к которым вы подключаетесь. Вы можете заменить
*
шаблон имени хоста, если хотите, чтобы он применялся только к некоторым хостам.Убедитесь, что права доступа к файлу ограничивают доступ только для вас:
источник
config
моем домашнем каталоге нет файлов ..ssh
подкаталоге вашего homedir.ssh -o UserKnownHostsFile=/dev/null
Вместо того, чтобы добавлять его в свой
~/.ssh/config
файл для всех хостов *, было бы безопаснее указать конкретный хост.Вы также можете передать параметр в командной строке следующим образом:
источник
Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
ssh -o UserKnownHostsFile=/dev/null
вместо.Стоит указать на эту настройку в вашей конфигурации ssh:
Будет означать, что ключи хоста все еще добавляются в .ssh / known_hosts - вас просто не спросят, доверяете ли вы им, но если хост поменяется, я готов поспорить, что вы получите большое предупреждение об этом. Вы можете обойти эту проблему, добавив еще один параметр:
Это добавит все эти "недавно обнаруженные" хосты в корзину. Если ключ хоста меняется, никаких проблем.
Я бы непростительно , не говоря уже о том , что обойти эти предупреждения на hostkeys имеет очевидные последствия безопасности - вы должны быть осторожны , что вы делаете это по правильным причинам и то , что вы подключаетесь на самом деле является то , что вы имеете в виду , чтобы подключиться и не злонамеренный хост, поскольку в этот момент вы разрушили основную часть безопасности в ssh как решение.
Например, если вы попытаетесь установить это с помощью командной строки, полная команда будет выглядеть так:
Хотя это было бы глупо - учитывая, что приведенные выше рабочие примеры для файлов конфигурации ssh, вероятно, будут иметь больше смысла во всех случаях.
источник
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. В моем случае я используюissh
для подключения к хостам, где я знаю изменения ключа хоста.UserKnownHostsFile
не такUserKnownHostFiles
.FYI. Я предпочитаю отключать проверку хоста только при использовании cssh.
источник
cssh
илиssh
?-o
нужен?alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
работа для меняЕсли вы хотите отключить один раз, используйте:
Это также будет работать, если ключ хоста изменится, и не будет сохранять ключ как доверенный для дополнительной безопасности.
источник
Из того, что это звучит ,
может быть достаточно для вас. И вы все равно сможете поддерживать это подобие безопасности.
источник
https://askubuntu.com/a/87452/129227 предлагают изменить файл конфигурации, который помогает. Но вместо того, чтобы открывать вещи для любого хоста, я хотел, чтобы это было сделано для каждого хоста. Сценарий ниже помогает автоматизировать процесс:
пример вызова
./sshcheck somedomain site1 site2 site3
скрипт sshcheck
источник