ssh
Ubuntu 11.04 에서 엄격한 호스트 키 체크인을 비활성화하고 싶습니다 . 어떻게합니까?
ssh -o UserKnownHostsFile=/dev/null
ssh
Ubuntu 11.04 에서 엄격한 호스트 키 체크인을 비활성화하고 싶습니다 . 어떻게합니까?
ssh -o UserKnownHostsFile=/dev/null
답변:
귀하의 ~/.ssh/config
(이 파일이 존재하지 않으면 작성하십시오) :
Host *
StrictHostKeyChecking no
연결하는 모든 호스트에 대해 전원이 꺼집니다. *
일부 호스트에만 적용하려는 경우 호스트 이름 패턴으로 바꿀 수 있습니다 .
파일에 대한 권한이 자신에게만 액세스를 제한해야합니다.
sudo chmod 400 ~/.ssh/config
config
내 홈 디렉토리에 이름이 지정된 파일이 없습니다 .
.ssh
homedir 의 하위 디렉토리에도 있습니다.
ssh -o UserKnownHostsFile=/dev/null
~/.ssh/config
모든 호스트 *에 대해 파일에 파일을 추가하는 대신 특정 호스트를 지정하는 것이 더 안전합니다.
다음과 같이 명령 행에서 매개 변수를 전달할 수도 있습니다.
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
이렇게하면이 "새로 검색된"호스트가 모두 휴지통에 추가됩니다. 호스트 키가 변경되면 아무런 문제가 없습니다.
나는 hostkeys에 이러한 경고를 우회하는 것은 명백한 보안 파급 효과를 가지고 말할 것도없고 태만 될 것이다 - 당신은 당신이 바로 그 이유 & 것을 그것을하고 있다는 것을주의해야한다 무엇을 연결하는 것은 실제로하는 것입니다 당신이하지 연결하기 위해 무엇을 의미하는지 이 시점에서 당신은 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
.
참고로 cssh를 사용할 때만 호스트 검사를 비활성화하는 것을 선호합니다.
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