Section 4. SSH 공개키 인증

4.1 공개키 암호

공개키 암호라는 것은 비밀키와 공개키를 생성하여 공개키는 배포하고 비밀키는 사용자가 안전하게 지키는 운용 방식을 말한다. 공개키와 비밀키는 동시에 만들어지며 비밀키로 공개키를 생성하거나 공개키로 비밀키를 생성하는 것은 불가능하다. 키는 DSA, RSA, ECDSA 등의 알고리즘을 이용하여 생성된다. 이 한 쌍의 키를 이용하여 암호화와 서명을 실시한다.

공개키와 비밀키는 한 쌍으로 구성되어 있으며 각 용도가 다르다.

공개키

  • 일반에 공개
  • 소유자 이외의 송신자가 암호화에 이용
  • 소유자 이외의 수신자가 서명 검증에 이용
  • SSH에서 로그인하는 호스트에 등록하여 이용

비밀키

  • 소유자가 가짐
  • 공개키로 암호화된 메시지를 비밀키로 복호화
  • 작성한 메시지에 대한 서명에 이용
  • SSH 커맨드 실행 시 비밀키를 지정함으로써 공개키를 등록한 호스트의 로그인에 이용

SSH 서버의 공개키

SSH 서버는 자신의 호스트용 공개키와 비밀키를 갖고 있다. SSH 클라이언트는 서버의 공개키를 등록해둠으로써 해당 서버가 정말로 목적 서버인지 판단할 수 있다.

이때 가진 서버의 공개키와 서버에서 보내온 공개키가 다른 경우 다음과 같은 이유를 생각해 볼 수 있다.

  1. SSH 서버의 재 설치나 교체 등으로 말미암아 호스트 키가 변경되었다.
  2. SSH 서버와 SSH 클라이언트 간에 제삼자가 끼어들었다.(Man in the middle attack)

4.2 SSH의 공개키 인증

SSH의 공개키 인증은 해체 불가능한 비밀키와 공개키 한 쌍의 신뢰성을 바탕으로 성립되어 있다. 사용자는 로그인하려는 호스트에 자신의 공개키를 저장한다. 공개키 저장 수단은 호스트에 따라 달라진다.

공개키 유효화

SSH 공개키 인증이 아직 등록되어 있지 않았을 때는 ssh-copy-id를 사용하거나 scp 등을 사용하여 공개키를 전송한다.

SSH 서버에서의 공개키 설정

SSH 로그인을 받아들이는 쪽에서는 SSH 데몬의 설정을 변경함으로써 공개키 인증을 유효화하게 된다. /etc/ssh/sshd_config의 해당 부분 변경하고 sshd를 재구동하면 유효화된다.

SSH 클라이언트의 디버그

SSH 클라이언트에서 디버그하려면 -v를 붙여 실행하면 된다. -v는 verbose를 의미하는 옵션으로, v를 3개까지 붙여(-vvv) 디버그 레벨을 조절할 수 있다.

results matching ""

    No results matching ""