Как отключить строгую проверку ключа хоста в ssh?

Я иногда вижу это на своем Dell XPS 15 (L322X), он ничем не повредит, и я не могу точно определить конкретную причину этого.

Я сомневаюсь, что о чем-то беспокоиться.

1
задан 15 November 2017 в 17:35

6 ответов

Вместо того, чтобы добавлять его в ваш файл ~/.ssh/config для всех хостов *, было бы безопаснее указывать конкретный хост.

Вы также можете передать параметр в командной строке следующим образом:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com
135
ответ дан 25 May 2018 в 15:58
  • 1
    Обратите внимание, что вам обычно нужно делать это только один раз для каждого хоста, поскольку он говорит об этом в первый раз: Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts. – MarkHu 24 July 2013 в 05:49
  • 2
    Это не сработает. Это должно быть ssh -o UserKnownHostsFile=/dev/null. – qwertzguy 29 October 2014 в 06:51
  • 3
    @qwertzguy Это действительно работает. Ваш вариант сделает это так, что ключ хоста будет потерян каждый раз, что полезно и безопаснее, но не то, что задал вопрос. – Jon Bentley 30 November 2015 в 04:04
  • 4
    @qwertzguy Не могли бы вы добавить это как ответ, ваш действительно лучший для quick'n'dirty? просто подключитесь, я знаю, что я делаю & quot ;? Не хочешь ниндзя украсть свой ответ. – odinho - Velmont 29 August 2017 в 12:32
  • 5
    @ odinho-velmont сделано – qwertzguy 29 August 2017 в 18:55

Стоит отметить, что:

StrictHostKeyChecking no

Будет означать, что хост-ключи по-прежнему добавляются в .ssh / known_hosts - вам просто не будет предложено указать, доверяете ли вы им, м, готов поспорить, вы получите большое предупреждение об этом. Вы можете обойти эту проблему, добавив еще один параметр:

UserKnownHostsFile /dev/null

Это добавит все эти «вновь обнаруженные» хосты в корзину мусора. Если ключ хоста изменился, никаких проблем.

Я бы сказал, что не следует забывать, что обход этих предупреждений о ключах хостов имеет очевидные последствия для безопасности - вы должны быть осторожны, что делаете это по правильным причинам и amp; что на самом деле вы подключаетесь к тому, что вы хотите подключиться, а не к вредоносному узлу.

76
ответ дан 25 May 2018 в 15:58
  • 1
    Вы правы, вы получаете большое предупреждение – Freedom_Ben 20 January 2014 в 23:35
  • 2
    Я думаю, что это правильный ответ. Это хорошо работает для подключения к хостам в частной локальной сети. – Steve Davis 14 January 2015 в 18:39
  • 3
    Может быть удобно иметь псевдоним ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. В моем случае я использую issh для подключения к узлам, где я знаю, что ключ хоста изменяется. – ecerulm 2 May 2016 в 16:53
  • 4
    @ecerulm - просто небольшая опечатка: это UserKnownHostsFile не UserKnownHostFiles. – Grey Panther 2 October 2017 в 13:16
FYI. Я предпочитаю отключать проверку хоста только при использовании cssh.

alias cssh='cssh -o "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"'
15
ответ дан 25 May 2018 в 15:58

Если вы хотите отключить одноразовое использование, используйте:

ssh -o UserKnownHostsFile=/dev/null

Это будет работать и при изменении ключа хоста, и не будет сохранять ключ в качестве надежного для дополнительной безопасности. [ ! d1]

5
ответ дан 25 May 2018 в 15:58

По тому, как это звучит,

NoHostAuthenticationForLocalhost yes

звучит как достаточно хорошо для вас. И вы все равно сможете сохранить это подобие безопасности.

4
ответ дан 25 May 2018 в 15:58

https://askubuntu.com/a/87452/129227 предлагает изменить файл конфигурации, который помогает. Но вместо того, чтобы открывать вещи для любого хоста, я хотел, чтобы это было сделано для каждого хоста. Скрипт ниже помогает автоматизировать процесс:

example call

./ sshcheck somedomain site1 site2 site3

example call [!d5 ]

#!/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
1
ответ дан 25 May 2018 в 15:58

Другие вопросы по тегам:

Похожие вопросы: