Hai karthick87, saya harap Anda memahami implikasi keamanan dari melakukan perubahan itu;)
Panther
1
Namun perlu dicatat, bahwa Anda ingin tahu apakah kunci host telah berubah . Itu adalah bendera merah besar bahwa seseorang mungkin menipu tuan rumah. Jadi UserKnownHostFile / dev / null adalah ide yang sangat buruk.
4
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
2
Jika Anda hanya perlu melakukan koneksi satu kali tanpa kesalahan:ssh -o UserKnownHostsFile=/dev/null
odinho - Velmont
Jawaban:
227
Di ~/.ssh/configfile Anda (jika file ini tidak ada, buat saja):
Host *
StrictHostKeyChecking no
Ini akan mematikannya untuk semua host yang terhubung. Anda dapat mengganti *dengan pola nama host jika Anda hanya ingin itu berlaku untuk beberapa host.
Pastikan izin pada file membatasi akses hanya untuk Anda:
Perhatikan bahwa Anda biasanya hanya perlu melakukan ini sekali per host karena ia mengatakan ini pertama kali:Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
MarkHu
24
Itu tidak akan berhasil. Seharusnya ssh -o UserKnownHostsFile=/dev/nullsebaliknya.
qwertzguy
1
@ qwertzguy Tidak berfungsi. Pilihan Anda akan membuatnya sehingga kunci host hilang setiap kali, yang berguna dan lebih aman, tetapi bukan apa yang ditanyakan.
Jon Bentley
@ qwertzguy Bisakah Anda menambahkan ini sebagai jawaban, Anda benar-benar yang terbaik untuk quick'n'dirty "hubungkan saja aku tahu apa yang saya lakukan"? Tidak ingin ninja-mencuri jawaban Anda.
odinho
@ odinho-velmont selesai
qwertzguy
106
Layak untuk menunjukkan pengaturan itu dalam konfigurasi ssh Anda:
StrictHostKeyChecking no
Akan berarti hostkeys masih ditambahkan ke .ssh / known_hosts - Anda tidak akan ditanya tentang apakah Anda mempercayai mereka, tetapi jika host berubah, saya berani bertaruh Anda akan mendapat peringatan besar tentangnya. Anda dapat mengatasi masalah ini dengan menambahkan parameter lain:
UserKnownHostsFile /dev/null
Ini akan menambahkan semua host "baru ditemukan" ini ke tempat sampah. Jika kunci host berubah, tidak ada masalah.
Saya akan lalai untuk tidak menyebutkan bahwa menghindari peringatan ini pada hostkey memiliki konsekuensi keamanan yang jelas - Anda harus berhati-hati bahwa Anda melakukannya untuk alasan yang tepat & bahwa apa yang Anda hubungkan sebenarnya adalah apa yang Anda maksudkan dengan koneksi dan bukan sebuah host jahat, karena pada titik ini Anda telah mengikis bagian utama keamanan di ssh sebagai solusi.
Misalnya jika Anda mencoba dan mengatur ini dengan commandline, perintah lengkapnya adalah:
Saya pikir ini adalah jawaban yang tepat. Ini berfungsi baik untuk menghubungkan ke host di jaringan lokal pribadi.
Steve Davis
4
Mungkin nyaman untuk memiliki alias ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host. Dalam kasus saya, saya gunakan isshuntuk terhubung ke host di mana saya tahu perubahan host key.
ecerulm
1
@ecerulm - hanya kesalahan ketik kecil: UserKnownHostsFilebukan UserKnownHostFiles.
Grey Panther
20
FYI. Saya lebih suka menonaktifkan pemeriksaan host hanya ketika menggunakan cssh.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
https://askubuntu.com/a/87452/129227 menyarankan untuk memodifikasi file konfigurasi yang membantu. Tetapi alih-alih membuka segalanya untuk host mana pun, saya ingin ini dilakukan per host. Script 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/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
Jawaban:
Di
~/.ssh/config
file Anda (jika file ini tidak ada, buat saja):Ini akan mematikannya untuk semua host yang terhubung. Anda dapat mengganti
*
dengan pola nama host jika Anda hanya ingin itu berlaku untuk beberapa host.Pastikan izin pada file membatasi akses hanya untuk Anda:
sumber
config
di direktori home saya..ssh
subdirektori homedir Anda.ssh -o UserKnownHostsFile=/dev/null
Daripada menambahkannya ke
~/.ssh/config
file Anda untuk semua Host *, itu akan lebih aman untuk menentukan host tertentu.Anda juga dapat mengirimkan parameter pada baris perintah seperti ini:
sumber
Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
ssh -o UserKnownHostsFile=/dev/null
sebaliknya.Layak untuk menunjukkan pengaturan itu dalam konfigurasi ssh Anda:
Akan berarti hostkeys masih ditambahkan ke .ssh / known_hosts - Anda tidak akan ditanya tentang apakah Anda mempercayai mereka, tetapi jika host berubah, saya berani bertaruh Anda akan mendapat peringatan besar tentangnya. Anda dapat mengatasi masalah ini dengan menambahkan parameter lain:
Ini akan menambahkan semua host "baru ditemukan" ini ke tempat sampah. Jika kunci host berubah, tidak ada masalah.
Saya akan lalai untuk tidak menyebutkan bahwa menghindari peringatan ini pada hostkey memiliki konsekuensi keamanan yang jelas - Anda harus berhati-hati bahwa Anda melakukannya untuk alasan yang tepat & bahwa apa yang Anda hubungkan sebenarnya adalah apa yang Anda maksudkan dengan koneksi dan bukan sebuah host jahat, karena pada titik ini Anda telah mengikis bagian utama keamanan di ssh sebagai solusi.
Misalnya jika Anda mencoba dan mengatur ini dengan commandline, perintah lengkapnya adalah:
Itu akan konyol - mengingat bahwa contoh-contoh yang berfungsi di atas untuk file konfigurasi ssh cenderung lebih masuk akal dalam semua kasus.
sumber
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
. Dalam kasus saya, saya gunakanissh
untuk terhubung ke host di mana saya tahu perubahan host key.UserKnownHostsFile
bukanUserKnownHostFiles
.FYI. Saya lebih suka menonaktifkan pemeriksaan host hanya ketika menggunakan cssh.
sumber
cssh
ataussh
?-o
tidak perlu?alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] -p 2222'
bekerja untuk sayaJika Anda ingin menonaktifkan sekali pakai:
Itu akan bekerja juga jika kunci host berubah dan akan memastikan tidak menyimpan kunci sebagai tepercaya untuk keamanan tambahan.
sumber
Dari apa yang terdengar ,
mungkin cukup baik untukmu. DAN Anda masih bisa mempertahankan kemiripan keamanan itu.
sumber
https://askubuntu.com/a/87452/129227 menyarankan untuk memodifikasi file konfigurasi yang membantu. Tetapi alih-alih membuka segalanya untuk host mana pun, saya ingin ini dilakukan per host. Script di bawah ini membantu mengotomatiskan proses:
contoh panggilan
./sshcheck somedomain site1 site2 site3
skrip sshcheck
sumber