SSH known_hosts
파일에 호스트 키를 안전하게 추가하려면 어떻게 해야합니까?
개발 머신을 설정하고 있는데, 예를 들어 git
리포지토리가 github.com
SSH 를 사용 하지 않도록 복제 할 때 메시지가 표시 되지 않도록하고 싶습니다 .
나는 사용할 수 있다는 것을 알고 있지만 StrictHostKeyChecking=no
(예 : 이 답변 ) 안전하지 않습니다.
지금까지는 …
-
GitHub는 SSH 키 지문을 https://help.github.com/articles/github-s-ssh-key-fingerprints/에 게시합니다.
-
에
ssh-keyscan
대한 호스트 키를 얻는 데 사용할 수 있습니다github.com
.
이 사실들을 어떻게 결합합니까? 미리 입력 된 지문 목록이 주어지면 파일 의 출력을 파일에 ssh-keyscan
추가 할 수 있는지 어떻게 확인 known_hosts
합니까?
나는 다음을 묻는 것 같아요.
에 의해 반환 된 키의 지문을 어떻게 얻 ssh-keyscan
습니까?
SSH에 대해 이미 MITM을 사용 하고 있지만 유효한 인증서 체인이 있기 때문에 GitHub HTTPS 페이지를 신뢰할 수 있다고 가정합니다 .
즉, (의도 한) SSH 호스트 키 ( ssh-keyscan
)와 일부 (신뢰할 수있는) 키 지문이 있습니다. 다른 것을 어떻게 확인합니까?
관련 : 출력의 호스트 부분을 어떻게 해시 ssh-keyscan
합니까? 또는 해시 / 해시되지 않은 호스트를에 혼합 할 수 known_hosts
있습니까?
답변
known_hosts
파일에 키를 “안전하게”추가하는 가장 중요한 부분은 서버 관리자로부터 키 지문을 얻는 것입니다. 주요 지문은 다음과 같아야합니다.
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
GitHub의 경우 일반적으로 관리자와 직접 대화 할 수 없습니다. 그러나 웹 페이지에 키를 배치하여 정보를 복구 할 수 있습니다.
수동 키 설치
1) 서버에서 키 사본을 가져 와서 지문을 얻습니다. 주의 : 지문을 확인 하기 전에이 작업을 수행하십시오.
$ ssh-keyscan -t rsa github.com | tee github-key-temp | ssh-keygen -lf -
# github.com:22 SSH-2.0-babeld-f3847d63
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
2) 서버 관리자로부터 키 지문의 사본을 받으십시오.이 경우 github.com에 대한 정보가있는 페이지로 이동하십시오.
- github.com으로 이동
- 도움말 페이지로 이동합니다 (로그인 한 경우 오른쪽 메뉴, 그렇지 않으면 홈페이지 하단).
- 에서 시작 섹션으로 이동 SSH와 GitHub의에 연결
- SSH 연결 테스트로 이동
- 나중에 사용할 수 있도록 SHA256 지문을 해당 페이지에서 텍스트 편집기로 복사하십시오.
3) 두 소스의 키를 비교하십시오.
텍스트 편집기에서 바로 위에 배치하면 무언가가 변경되었는지 쉽게 확인할 수 있습니다.
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA) #key recovered from github website
2048 SHA256:nThbg6kXUpJ3Gl7E1InsaspRomtxdcArLviKaEsTGY8 github.com (RSA) #key recovered with keyscan
두 번째 키는 조작되었지만 원래 키와 매우 비슷해 보입니다. 이와 같은 상황이 발생하면 심각한 공격을 받고 신뢰할 수있는 보안 전문가에게 문의해야합니다.
키가 다르면 절차가 중단되고 보안 전문가와 연락하십시오
4) 키가 올바르게 비교되면 이미 다운로드 한 키를 설치해야합니다
cat github-key-temp >> ~/.ssh/known_hosts
또는 시스템의 모든 사용자 (루트로)를 설치하려면 다음을 수행하십시오.
cat github-key-temp >> /etc/ssh/ssh_known_hosts
자동 키 설치
빌드 프로세스 중에 키를 추가해야하는 경우 위 수동 프로세스의 1-3 단계를 따라야합니다.
이를 수행 한 후 github-key-temp
파일 의 내용을 검사하고 해당 내용을 알려진 호스트 파일에 추가하는 스크립트를 작성하십시오.
if ! grep github.com ~/.ssh/known_hosts > /dev/null
then
echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts
fi
이제 비활성화 된 모든 명령을 제거 해야합니다 .ssh
StrictHostKeyChecking
답변
known_hosts 파일에서 해시 / 해시되지 않은 항목을 혼합 할 수 있습니다.
따라서 github 키를 추가하려면 다음을 수행하십시오.
ssh-keyscan github.com >> ~/.ssh/known_hosts
해시하려면 -H를 추가하십시오.
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
답변
가장 쉬운 방법은를 사용하여 키를 수동으로 가져 와서 ssh-keyscan
수동으로 확인하는 것입니다.
$ ssh-keyscan -t rsa github.com | ssh-keygen -lf -
# github.com:22 SSH-2.0-libssh-0.7.0
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
그리고 그것들을 스크립트에 추가하면 “권한있는”공개 키가 나옵니다.