Pertanyaan Bagaimana cara menonaktifkan pemeriksaan kunci host yang ketat dalam ssh?


Saya ingin menonaktifkan pemeriksaan kunci host yang ketat ssh untuk Ubuntu 11.04. Bagaimana cara melakukannya?


163
2017-12-13 14:58


asal


Hai karthick87, saya harap Anda memahami implikasi keamanan dari perubahan itu;) - Panther
Namun perlu dicatat bahwa Anda ingin untuk mengetahui apakah kunci host memiliki berubah. Itu adalah bendera merah besar bahwa seseorang mungkin spoofing tuan rumah. Jadi UserKnownHostFile / dev / null adalah ide yang sangat buruk.
SSH digunakan tidak hanya untuk koneksi jarak jauh, Anda tahu. Semua host yang saya hubungkan berada di tumpukan di meja saya dan berbagi IP yang sama, jadi saya selalu memiliki peringatan host baru. - Barafu Albino
Jika Anda hanya ingin menghapus pesan untuk host tertentu, hapus baris yang sesuai ~ / .ssh / known_hosts. - stackexchanger
Jika Anda hanya perlu melakukan koneksi satu kali tanpa kesalahan: ssh -o UserKnownHostsFile=/dev/null - odinho - Velmont


Jawaban:


Di dalam Anda ~/.ssh/config (jika file ini tidak ada, cukup buat saja):

Host *
    StrictHostKeyChecking no

Ini akan mematikannya untuk semua host yang Anda hubungkan. Anda dapat mengganti * dengan pola hostname jika Anda hanya ingin menerapkannya ke beberapa host.

Pastikan izin pada file membatasi akses hanya untuk Anda sendiri:

sudo chmod 400 ~/.ssh/config

182
2017-12-13 15:16



Tidak ada nama file config di direktori home saya. - karthick87
Buat satu - seluruh isi file ada di kutipan saya di atas. Perhatikan itu di .ssh subdirektori dari homedir Anda juga. - Caesium
Apakah indentasi diperlukan? Entri saya terlihat seperti blok dibagi dengan garis kosong. - Andi Giga
Ini tidak bijaksana dalam banyak kasus, sering kali Anda hanya ingin menonaktifkannya satu kali: ssh -o UserKnownHostsFile=/dev/null - odinho - Velmont
mkdir -p ~ / .ssh && echo "Host *"> ~ / .ssh / config && echo "StrictHostKeyChecking no" >> ~ / .ssh / config - Sankarganesh Eswaran


Daripada menambahkannya ke Anda ~/.ssh/config file untuk semua Host *, akan lebih aman untuk menentukan host tertentu.

Anda juga bisa mengirimkan parameter pada baris perintah seperti ini:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com

141
2017-07-25 01:27



Perhatikan bahwa Anda biasanya hanya perlu melakukan ini satu kali per host karena ini mengatakan ini pertama kalinya: Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts. - MarkHu
Itu tidak akan berhasil. Harus ssh -o UserKnownHostsFile=/dev/null sebagai gantinya. - qwertzguy
@qwertzguy Ini berhasil. Pilihan Anda akan membuatnya sehingga kunci host hilang setiap waktu, yang berguna dan lebih aman, tetapi bukan pertanyaan yang ditanyakan. - Jon Bentley
@qwertzguy Bisakah Anda menambahkan ini sebagai jawaban, milik Anda adalah yang terbaik untuk quick'n'dirty "cukup hubungkan saya tahu apa yang saya lakukan"? Tidak ingin ninja mencuri jawaban Anda. - odinho - Velmont
@ odinho-velmont selesai - qwertzguy


Ini perlu menunjukkan bahwa:

StrictHostKeyChecking no

Akan berarti kunci host masih ditambahkan ke .ssh / known_hosts - Anda tidak akan ditanya tentang apakah Anda mempercayai mereka, tetapi harus host perubahan saya berani bertaruh Anda akan mendapatkan peringatan besar tentang hal itu. Anda dapat mengatasi masalah ini dengan menambahkan parameter lain:

UserKnownHostsFile /dev/null

Ini akan menambahkan semua host "yang baru ditemukan" ini ke tempat sampah. Jika kunci host berubah, tidak ada masalah.

Saya akan lalai untuk tidak menyebutkan bahwa menghindari peringatan ini pada kunci host memiliki konsekuensi keamanan yang jelas - Anda harus berhati-hati bahwa Anda melakukannya untuk alasan yang benar & bahwa apa yang Anda hubungkan ke sebenarnya aku s apa yang Anda maksud untuk terhubung dan bukan host jahat.


80
2017-12-02 23:25



Anda benar, Anda mendapatkan peringatan besar - Freedom_Ben
Saya pikir ini adalah jawaban yang benar. Ini berfungsi dengan baik untuk menghubungkan ke host di jaringan lokal pribadi. - Steve Davis
Bisa jadi nyaman untuk memiliki alias ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. Dalam kasus saya saya gunakan issh untuk terhubung ke host di mana saya tahu perubahan kunci host. - ecerulm
@ecerm - hanya kesalahan kecil: itu UserKnownHostsFile tidak UserKnownHostFiles. - Grey Panther


FYI. Saya lebih suka menonaktifkan host memeriksa hanya ketika menggunakan cssh.

alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'

15
2017-07-18 18:01



cssh atau ssh? - kenorb
Mungkin dia menggunakan cssh.sourceforge.net - MarkHu
Apakah saya salah, atau yang kedua -o tidak perlu? - yckart
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222' bekerja untukku - arganzheng


Jika Anda ingin menonaktifkan satu kali penggunaan dasar:

ssh -o UserKnownHostsFile=/dev/null

Itu juga akan berfungsi jika kunci host berubah dan akan memastikan untuk tidak menyimpan kunci sebagai tepercaya untuk keamanan tambahan.


6
2017-08-29 15:55





Dari apa itu terdengar seperti,

NoHostAuthenticationForLocalhost yes

mungkin cukup baik untukmu. DAN Anda masih bisa mempertahankan kemiripan keamanan itu.


4
2017-07-23 20:20





https://askubuntu.com/a/87452/129227 sarankan untuk memodifikasi file konfigurasi yang membantu. Tapi bukannya membuka banyak hal untuk host mana pun saya ingin ini dilakukan per host. Skrip di bawah ini membantu mengotomatiskan proses:

contoh panggilan

./sshcheck somedomain site1 site2 site3

skrip 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

1
2017-08-25 12:43