저는 Unix와 그 주변 환경, 특히 SSH와 인증에 대해 매우 익숙하지 않습니다.
나는 ID를 생성하고(공개/개인 키 쌍 생성) 이를 ssh-agent에 넣은 다음 공개 키를 원격 호스트에 복사하여 비밀번호를 입력하지 않고도 원격 호스트에 SSH로 연결할 수 있다는 것을 알고 있습니다. 내가 틀렸다면 정정하되 로컬 시스템에 등록된 모든 ID를 나열하려면 실행할 수 있습니다 ssh-add -l
.
SSH를 통해 연결하려고 하면(구체적으로 비밀번호를 반복해서 입력할 필요가 없도록 SSH를 통해 bitbucket에 연결하려고 합니다) 다음과 같은 경고가 표시됩니다.
Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts.
포기하고 "RSA 호스트 키를 영구적으로 추가"라고 부르는 작업을 수행한 후 실행하여 ssh-add -l
이전에 생성한 공개/개인 키 쌍이 등록되지 않고 대신 새로운 ID가 생성되는 것으로 나타났습니다. 헷갈려서 내용을 확인해 보았지만 ~/.ssh/
앞서 생성한 파일 외에 다른 공개/개인 키 파일은 보이지 않았습니다.
실행하여 ID를 제거하려고 시도했지만 ssh-add -D
소용이 없었습니다. 을 실행할 때 여전히 표시됩니다 ssh-add -l
.
내 질문은 다음과 같습니다
- 무슨 일이야? Unix에서 로컬 비밀번호를 묻는 메시지가 표시될 때 방금 새 ID를 만들었나요?
- 나열된 ID에 대한 공개 및 개인 키는 어디에서 찾을 수 있습니까
ssh-add -l
? 내 신원을 삭제할 수 없는 이유는 무엇입니까ssh-add -D
? - Bitbucket에 성공적으로 연결했는데 계정 관리자에 공개 키(이전에 생성한 키 외에)가 추가되지 않은 이유는 무엇입니까
ssh-keygen
? - 이것이 파일과 관련이 있을 수 있다는 것을 알았지
~/.ssh/known_hosts
만 해당 파일의 목적이 무엇인지, 전체 SSH 비즈니스와 어떤 관련이 있는지 모르겠습니다.
SSH 작동 방식, Unix의 공개/개인 키 및 ID 관리 방식, Known_hosts 파일의 작동 방식에 대한 설명을 인터넷에서 찾아봤지만 아무것도 찾을 수 없습니다. 외부 기사에 대한 설명이나 참조는 매우 감사하겠습니다!
추가 배경 정보:
이전에는 새로운 공개/개인 키 쌍을 생성하여 ssh-agent에 추가했습니다(그리고 Bitbucket의 지침에 따라 공개 키를 Bitbucket에 복사했습니다). 그러다가 컴퓨터를 껐다가 다음날 다시 켰습니다. 이 작업을 시도하면 git fetch
로컬 사용자 비밀번호를 입력하라는 메시지가 표시되고 위의 경고가 표시됩니다. 그러자 내 질문과 혼란이 사라졌습니다.
답변1
키워드는호스트 키. 호스트에 처음 연결하면 해당 호스트의 공개 키 지문이 표시됩니다. 서버 자체에는 사용자와 마찬가지로 키 쌍이 있습니다.
MITM을 받지 않도록 자신이 알고 있는 서버 지문을 사용하여 지문을 확인할 수 있다는 아이디어입니다.
호스트 키를 수락하면 Known_hosts 파일에 저장되며 클라이언트가 모든 후속 연결을 인증하는 데 사용됩니다.
호스트 키가 예기치 않게 변경되면 클라이언트는 뭔가 잘못되었을 수 있으므로 확인해야 함을 알리는 귀찮은 오류 메시지를 발견하고 표시합니다.