我想ssh
为Ubuntu 11.04 禁用严格的主机密钥签入。怎么做?
ssh -o UserKnownHostsFile=/dev/null
我想ssh
为Ubuntu 11.04 禁用严格的主机密钥签入。怎么做?
ssh -o UserKnownHostsFile=/dev/null
Answers:
在您的~/.ssh/config
文件中(如果此文件不存在,则创建它):
Host *
StrictHostKeyChecking no
这将关闭您连接到的所有主机。*
如果只希望将其应用于某些主机,则可以将其替换为主机名模式。
确保文件上的权限仅限制您自己的访问:
sudo chmod 400 ~/.ssh/config
config
我的主目录中没有命名的文件。
.ssh
homedir 的子目录中。
ssh -o UserKnownHostsFile=/dev/null
与其将它添加到~/.ssh/config
所有Host *的文件中,不如指定一个特定的主机。
您还可以在命令行上像这样传递参数:
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
。
值得指出的是您的ssh配置中的设置:
StrictHostKeyChecking no
这意味着主机密钥仍会添加到.ssh / known_hosts中-不会提示您是否信任它们,但是如果主机发生更改,我敢打赌您会收到关于它的重大警告。您可以通过添加另一个参数来解决此问题:
UserKnownHostsFile /dev/null
这会将所有这些“新发现”主机添加到垃圾箱。如果主机密钥发生更改,则没有任何麻烦。
我会不遗余力地指出,规避主机密钥上的这些警告会带来明显的安全后果-您应注意,出于正确的原因在执行此操作,并且所连接的实际上是您要连接的内容,而不是恶意主机,因为到此为止,您已经破坏了ssh安全性的主要部分作为解决方案。
例如,如果您尝试在命令行中进行设置,则完整的命令应为:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
但是,这将是愚蠢的-鉴于上述ssh配置文件的工作示例在所有情况下都可能更有意义。
ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host
。就我而言,我用于issh
连接到主机密钥已更改的主机。
UserKnownHostsFile
不是UserKnownHostFiles
。
仅供参考。我更喜欢仅在使用csh时禁用主机检查。
alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
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脚本
#!/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