Saya ingin menonaktifkan pemeriksaan kunci host ketat ssh
untuk Ubuntu 11.04. Bagaimana cara melakukannya?
ssh -o UserKnownHostsFile=/dev/null
Saya ingin menonaktifkan pemeriksaan kunci host ketat ssh
untuk Ubuntu 11.04. Bagaimana cara melakukannya?
ssh -o UserKnownHostsFile=/dev/null
Jawaban:
Di ~/.ssh/config
file 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:
sudo chmod 400 ~/.ssh/config
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:
ssh -o StrictHostKeyChecking=no yourHardenedHost.com
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:
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:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
Itu akan konyol - mengingat bahwa contoh-contoh yang berfungsi di atas untuk file konfigurasi ssh cenderung lebih masuk akal dalam semua kasus.
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 host key.
UserKnownHostsFile
bukan UserKnownHostFiles
.
FYI. Saya lebih suka menonaktifkan pemeriksaan host hanya ketika menggunakan cssh.
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
cssh
atau ssh
?
-o
tidak perlu?
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'
bekerja untuk saya
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/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