SSH : 호스트 <host>의 신뢰성을 설정할 수 없습니다


83

이 메시지는 무엇을 의미합니까? 이것이 잠재적 인 문제입니까? 채널이 안전하지 않습니까?

아니면 새 서버에 연결할 때 항상 표시 되는 기본 메시지 입니까?

과거에 SSH를 사용할 때이 메시지를 보는 데 익숙합니다. 항상 일반적인 방법으로 비밀번호를 사용하여 로그인을 입력했으며 개인 / 공개 키를 사용하지 않았기 때문에 기분이 좋았습니다 (훨씬 더 안전합니다) 짧은 비밀번호보다). 그러나 이번에는 bitbucket에 연결하기 위해 ssh로 공개 키를 설정했지만 여전히 메시지가 나타납니다. 마지막에 암호문 프롬프트가 개인 키의 암호 해독을위한 다른 보완적인 보안 조치라는 것을 알고 있습니다.

누군가가이 "진실을 확립 할 수 없습니다"라는 메시지의 의미에 대해 좋은 설명을 해 줄 수 있기를 바랍니다.

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.

RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,207.223.240.181' (RSA) to the list of
known hosts.
Enter passphrase for key '/c/Users/Steven/.ssh/id_rsa':

2
이것은 실제로 "정확하게 말하는 것"메시지 중 하나입니다. 그것은 ssh당신이 정말로 대화하고 있다는 것을 말할 방법이 없다는 것을 의미 합니다 bitbucket.org. 알 수있는 방법을 구성하면 작동하지 않습니다. 당신이하지 않았다면, 당신이하지 않았다고 말하고 있습니다.
David Schwartz

답변:


71

이전에이 서버에 연결 한 적이 없다는 메시지입니다. 당신이 그것을 기대한다면, 그것은 정상입니다. 편집증이라면 대체 채널을 사용하여 키의 체크섬 / 지문을 확인하십시오. 그러나 ssh 연결을 리디렉션 할 수있는 사람은 웹 브라우저 세션을 리디렉션 할 수도 있습니다.

이 ssh 설치에서이 서버에 연결 한 경우 서버가 새 키로 재구성되었거나 누군가가 서버의 ID를 스푸핑합니다. 중간자 공격의 심각성으로 인해 가능성에 대해 경고합니다.

어느 쪽이든, 누군가 에게 안전한 암호화 된 채널이 있습니다. 지문에 해당하는 개인 키가없는 사람은 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40전송 한 내용을 해독 할 수 없습니다.

본인 인증에 사용하는 키는 관련이 없습니다. 도용 할 수있는 사기 서버에 인증 정보를 보내지 않으려는 경우 암호를 사용할지 여부에 따라 변경 사항을 기 대해서는 안됩니다. 로그인 할 개인 키. 아직 그 과정에서 아직까지는 얻지 못했습니다.


따라서 악의적 인 제 3자가 있고 메시지를 닫아도 내가 공개 키를 보내는 것만으로도 내 데이터를 해독 할 수 없습니까? 이제 내 데이터가 손상 될 수있는 유일한 방법은 (1) 개인 키가 손상되었거나 (2) 비트 버킷 서버가 손상되었거나 (3) 내 비트 버킷 계정이 손상된 경우입니다. 그들이 로그인 시도를 제한하는 한 (그렇지 않으면 정말 놀랐습니다) 현 시점에서 편집증을 일으키는 많은 이유가 실제로 없습니다.
Steven Lu

10
@ 스티븐 : 당신은 그에게 공개 키를 보내지 않을 것입니다. 그는 이미 가지고 있습니다. 당신이하고있는 일은 개인 키를 사용하여 도전을 인증하는 것입니다 ... 그가 당신이라고 주장 하는 실제 bitbucket.org에 연결 하고 진짜 도전을 받고 도전 할 때 그 도전을 사용하면 그는 당신을 속일 수 있습니다 그에게 실제 bitbucket.org에서 귀하의 계정에 액세스 할 수있는 유효한 응답을 보냅니다. 그는 여전히 개인 키를 가지고 있지 않으므로 나중에 또는 키 잠금이 해제 된 다른 리소스에 로그인 할 수 없지만 한 번의 로그인 세션이 있습니다.
벤 Voigt

이것이 "허가 서버에 인증 정보를 전송하고 싶지 않다"고 대답했을 때의 대답입니다.
벤 Voigt

2
"편집증이라면, 대체 채널을 사용하여 키의 체크섬 / 지문을 확인하십시오." 편집증 (및 기록)의 경우, github의 지문은 help.github.com/articles/generating-ssh-keys에 있으며 bitbucket은 confluence.atlassian.com/display/BITBUCKET/에
sundar

1
@BenVoigt 그래, 정말 편집증은 다른 관련없는 네트워크를 통해 해당 페이지로 이동하거나 github 본사로 날아가서 직접 지문을 얻는다는 것을 이해합니다.)
sundar

21

비즈니스 비밀을 교환하기 위해 누군가를 만난다고하자. 귀하의 고문은 귀하가 그 사람을 한 번도 만나 본 적이 없으며 그것이 사기꾼이 될 수 있다고 말합니다. 또한, 그와의 다음 회의에서 귀하의 고문은 더 이상 경고하지 않을 것입니다. 그것이 메시지의 의미입니다. 사람은 원격 서버이고 권고자는 ssh 클라이언트입니다.

나는 그녀와 비밀을 공유하기 전에 그 사람의 신원을 다시 확인하는 것이 편집증이라고 생각하지 않습니다. 예를 들어, 그녀의 사진이 담긴 웹 페이지를 열고 앞의 얼굴과 비교할 수 있습니다. 또는 그녀의 신분증을 확인하십시오.

비트 버킷 서버의 경우,보다 신뢰할 수있는 다른 컴퓨터를 사용하여 그 얼굴 사진을 가져온 다음 현재 사용중인 컴퓨터에 있는 사진 과 비교할 수 있습니다. 사용하다:

 ssh-keyscan -t rsa bitbucket.org | ssh-keygen -lv -f -

면이 일치 하면 다음 과 같이 키를 파일에 추가 할 수 있습니다 ~/.ssh/known_hosts( 예 : 많은 Linux 배포판의 표준 위치).

ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts

그리고 ssh 클라이언트는 이미 그녀의 얼굴을 알고 있으므로 경고하지 않습니다 . 연결할 때마다 얼굴 을 비교 합니다 . 매우 중요합니다. 사기꾼 (예 : 중간자 공격)의 경우 ssh 클라이언트는 얼굴 이 변경 되어 연결을 거부합니다 .


이 답변은 매우 도움이됩니다
010110110101 2019 년

4
이것은 정답입니다 : ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts 감사합니다 이반!
로드

1
@로드 : 당신은 완전히 불필요한 명령 ( known_hosts질문에 이미 표시된 것처럼 원래 경고에 "예"를 입력하여 수정할 수 있음)과 위험한 (사용자가 추가 한 키)에 따라 허용 된 답변을 선택합니다. 파일은 두 번 가져 오기 때문에 반드시 본 것과 동일하지는 않습니다.)?
벤 Voigt

@BenVoigt이 솔루션이 "yes"를 입력한다고해서이 솔루션이 완전히 스크립팅 가능하다는 것은 아닙니다. 나는 대부분의 사람들이 "(예 / 아니오)?" 신속한. 사람의 개입없이 (서버 설정 스크립트)이 문제를 해결하는 방법을 알아 내려고 하면서이 Q & A를 보았습니다. 흥분에 나는 OP의 질문이 내 것과 조금 다르다는 것을 알지 못했지만 IMO는 여전히 스레드에서 가장 유용하고 명확하지 않은 대답입니다.
로드

1
@로드 : 아니요, 유용하지 않습니다. 보안을 낮추는 것은 좋지 않습니다. 보안을 낮추는 더 빠른 방법을 찾는 것은 유용하지 않습니다.
벤 Voigt

5

단순히 known_hosts텍스트 파일 을 작성해야 했습니다.~/.ssh

sudo vim ~/.ssh/known_hosts
sudo chmod 777 ~/.ssh/known_hosts

이 작업을 수행 한 후 호스트를 추가했으며 메시지를 다시는 보지 못했습니다.


나는 그것이 실제로 아무것도 바뀌지 않는다고 생각합니다. 서버 자체가 변경되면 경고가 표시됩니다. 예를 들어 처음 연결하는 새 가상 머신을 프로비저닝하는 경우입니다. known_hosts올바른 권한 이있는 파일 이 있는지 여부 에 따라 새 서버의 신뢰성에 대해 묻는 메시지가 표시되지 않습니다 known_hosts. 이것은 수표를 건너 뛰는 일반적인 방법 중 하나입니다 (수표에 "예"라고 말하는 것이 더 빠르지 만)
Steven Lu

감사. known_hosts가 있었지만 계속 경고 메시지가 나타납니다. 경고가 중지되도록 known_hosts에 대한 권한을 변경해야했습니다.
ArcaneDominion

6
이러지 마십시오. 심각한 보안 위험이 될 수 있습니다. 호스트 파일은 본인 만 쓸 수 있어야합니다. 두 번째 명령은 기본적으로 컴퓨터의 모든 사용자가 서버 ID를 스푸핑하도록 허용하는 것입니다.
Stolz

"서버 자체가 변경되면 경고가 표시됩니다." 또는 이전에 서버를 방문한 적이없는 경우.
로드

2

또 다른 쉬운 방법이 있습니다. /root/.ssh 아래의 "config"파일을 터치하고 StrictHostKeyChecking 매개 변수를 추가하십시오. 다음에 서버에 로그인하면 rsa 키가 known_hosts에 추가되고 "yes"를 요청하지 않습니다. 진위 확인을 위해


3
권장하지 않습니다. 상황을 다루는 것은 쉽지만 올바른 방법은 아닙니다.
Vikas

1

이 메시지는 SSH로,이 특정 호스트 키를 본 적이 없다고 알려주므로 사용자가 생각하는 호스트에 연결되어 있는지 실제로 확인할 수는 없습니다. "예"라고하면 ssh 키를 known_hosts 파일에 넣은 다음 후속 연결시 호스트에서 얻은 키와 known_hosts 파일의 키를 비교합니다.

이 경고를 비활성화하는 방법을 보여주는 스택 오버플로에 대한 관련 기사가 https://stackoverflow.com/questions/3663895/ssh-the-authenticity-of-host-hostname-cant-be-established 였습니다.


10
그러나 경고를 비활성화 하지 않는 것이 좋습니다 . 매우 유용한 보안 정보를 제공하기위한 것입니다.
Rory Alsop

0

이미 주어진 답변 (이전에이 호스트에 연결 한 적이 없음) 외에도 현재 호스트와 연결하지 않은 (그 호스트에 대한) 가능성도 있습니다. 이것은 심리적으로 만 다릅니다. 호스트 A에서 B로 연결하는 동안 호스트 X에서 B로 연결을 시도하는 것 같습니다. 예를 들어 A에서 X로 ssh-ed 한 다음 같은 터미널에서 ssh로 B를하려고 할 때 여전히 A에 있다고 생각할 수 있습니다.


호스트 A가 B에 대해 알고 있지만 X는 모르지만 ssh 에이전트 전달을 사용하면 경고가 표시되지 않는지 궁금합니다. 에이전트 전달은 A와 X 사이 ssh에서 발생합니다. 엔드 장치에만 관리해야하는 ssh 키 수를 줄이십시오.
Steven Lu

0

필자의 경우 기본 설정을 변경했기 때문에 홈 디렉토리 권한으로 인해 비밀번호가 적습니다. 마지막으로 여기 나를 위해 일한 것이 있습니다. 내 홈 디렉토리 권한은

/ home / username

drwxr----x. 18 username     groupname  4096 May 11 11:52 username

/home/username/.ssh

268823097 drwx------   2 username groupname     29 May 11 11:53 .ssh

/home/username/.ssh/authorized_keys

-rw-r----- 1 username groupname 402 May 11 11:53 authorized_keys
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.