ssh가 허가를 요청하는 것을 피하는 방법?


57

RAC 설치를위한 Oracle 노드 설치 속도를 높이려고합니다. 이를 위해서는 ssh를 설치하고 구성하여 암호를 요구하지 않습니다.

문제는 다음과 같습니다. 첫 번째 사용시 다음 메시지가 표시됩니다

RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes

이를 피할 수있는 방법이 있습니까? 아니면 모든 서버의 모든 서버에서 수동으로 한 번 이상 연결해야 할 운명이 있습니까?

답변:


90

설정 StrictHostKeyChecking no당신에 /etc/ssh/ssh_config이 서버의 모든 사용자가 사용하는 글로벌 옵션이 될 것입니다 파일. 또는 ~/.ssh/config현재 사용자의 기본값 인 파일에 설정하십시오 . 또는 명령 행에서 사용할 수 있습니다.

ssh -o StrictHostKeyChecking=no -l "$user" "$host"

작동 방식에 대한 설명은 다음과 같습니다 man ssh_config (또는 최신 버전 참조 ).

StrictHostKeyChecking

      이 플래그가 "yes"로 설정되면 ssh$HOME/.ssh/known_hosts파일에 호스트 키를 자동으로 추가하지 않으며 호스트 키가 변경된 호스트에 대한 연결을 거부합니다. 이것은 트로이 목마 공격으로부터 최대한의 보호를 제공하지만 /etc/ssh/ssh_known_hosts파일이 제대로 유지 관리되지 않거나 새 호스트에 대한 연결이 빈번한 경우 성 가실 수 있습니다. 이 옵션은 사용자가 모든 새 호스트를 수동으로 추가하도록합니다. 이 플래그가 "no"로 설정되면 ssh사용자가 알려진 호스트 파일에 새 호스트 키를 자동으로 추가합니다. 이 플래그가 "ask"로 설정된 경우, 사용자가 실제로 원하는 것을 확인한 후에 만 ​​새 호스트 키가 사용자가 알고있는 호스트 파일에 추가되며 ssh 는 호스트 키가 변경된 호스트에 대한 연결을 거부합니다. . 알려진 호스트의 호스트 키는 모든 경우에 자동으로 확인됩니다. 인수는 "yes", "no"또는 "ask"여야합니다. 기본값은“ask”입니다.


1
+1, 나는 또한 내 서버를 위해. 그리고 명확하게 말하면, 질문의 메시지는 서버가 아닌 연결 클라이언트 컴퓨터의 ssh 클라이언트에서 온 것입니다.
Patkos Csaba

3
이 답변은 제작 과정에서 보안 문제처럼 들립니다.
SunSparc

25

ssh-keyscan -ssh 공개 키 수집

연결할 호스트 목록을 이미 알고 있다면 다음을 발행하면됩니다.

ssh-keyscan host1 host2 host3 host4

-Hssh defaults와 같은 결과를 지금 해시 하도록 옵션을 제공 할 수 있습니다.

또한 당신이 줄 수 -t keytype있었다 키 타입 이다 dsa, rsa또는 ecdsa당신은 키의 유형 대신 기본으로 잡아에있는 같은 특혜가있는 경우.

일단 실행 ssh-keyscan하면 알려진 호스트 파일이 미리 채워지고 ssh가 새 키 추가 권한을 요구하지 않습니다.


1
"미리 채워질 것"이라는 의견에 대해 조금 당황합니다. known_hosts는 이것을 실행 한 후에 만들거나 수정하지 않습니다. 내용을 파일로 파이프하여 파일을 채울 수 있다는 의미입니까?
rschwieb

4
techrepublic.com/article/…로 확인 하십시오 . ssh-keyscan -H myhost >> ~/.ssh/known_hosts또는 서버 전체의 경우/etc/ssh/ssh_known_hosts
cole

12

각 서버의 known_hosts에 지문을 추가 할 수 있습니다. 단일 사용자의 경우 :

cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts

3
이것은 해싱이 도입 된 이래로 더 이상 올바른 방법이 아닙니다.
Deim0s

10

호스트 무시

HostKeyChecking을 무시하십시오. 이를 위해 다음과 같이 사용합니다.

ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null user@example.net

호스트 추가

.ssh/known_hosts처음 연결하기 전에 호스트 / 서버의 지문을 추가하십시오 . 이것이 더 안전한 방법입니다.


안녕하세요. 오라클은 ssh 명령을 실행하므로 수행 방법을 제어 할 수 없습니다.
Nicolas de Fontenay

공감. 내가 본 대부분의 답변은 dev가 알려진 호스트 파일을 무효화한다는 언급을 놓치고 있습니다. 이것은 명령을 훨씬 더 유용하게 만들고 존재하는 구성을 망치지 않습니다.
Alex

(2) 물론 알려진 호스트 파일에 지문을 추가하는 것이 이상적인 방법입니다. 그러나 어떻게 해야합니까? (1) 사용자에게 알려진 호스트 파일을 설정하는 것이 왜 유리  /dev/null합니까? ssh -oStrictHostKeyChecking=no user@example.net서버의 지문을 $HOME/.ssh/known_hosts파일 로 가져 오기 위해 한 번만 수행하는 것이 좋지 않으므로 후속 요청이 확인 요청없이 계속 진행됩니까?
G-Man

3

시도하기 전에 다음 스 니펫을 실행하십시오.

mkdir -p ~/.ssh     
echo "Host *" > ~/.ssh/config     
echo " StrictHostKeyChecking no" >> ~/.ssh/config

추신 : 엄격히 프로덕션 서버에는 적합하지 않으며 ManInMiddle을주의하십시오.


0

나는 하나의 오프 타입 일에 대한 Tim의 대답을 좋아하지만, 이것이 정기적으로 연결하려는 호스트라면 ~ / .ssh / config에 항목을 만들 것입니다 (파일이 없으면 작성하십시오).

# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
    HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.