Post

SSH

SSH(Secure Shell)

SSH(Secure Shell)는 보안되지 않은 네트워크를 통해 네트워크 서비스를 보호하는 데 사용되는 암호화 네트워크 프로토콜이다. SSH는 클라이언트-서버 아키텍처에서 보안 채널을 제공하여 SSH 클라이언트 애플리케이션을 SSH 서버와 연결한다. 이는 원격 명령 줄 로그인 및 실행에 가장 일반적으로 사용되지만 광범위한 기타 보안 네트워크 서비스에도 사용할 수 있다.

SSH의 주요 기능

  • 암호화: SSH는 공개 키 암호화를 사용하여 클라이언트와 서버 간의 연결을 암호화한다. 이를 통해 도청, 연결 하이재킹 및 기타 공격을 방지할 수 있다.
  • 인증: SSH는 다양한 형태의 인증을 지원한다. 가장 일반적인 것은 비밀번호 기반 인증과 공개 키 기반 인증이다.
    • 비밀번호 기반 인증: 사용자는 SSH 서버에 로그인하기 위해 비밀번호를 제공하며, 비밀번호는 암호화된 채널을 통해 전송되므로 일반 텍스트로 노출되지 않는다.
    • 공개 키 기반 인증: 사용자는 한 쌍의 키, 즉 누구와도 공유할 수 있는 공개 키와 비밀로 유지되는 개인 키를 가진다. 공개 키는 SSH 서버에 배치되며, 인증 중에 서버는 이를 사용하여 클라이언트가 해당 개인 키를 보유하고 있는지 확인한다.
  • 무결성: SSH는 메시지 무결성 검사를 사용하여 세션 중에 주고받은 데이터가 수정되지 않도록 보장한다.
  • 기밀성: SSH는 암호화를 통해 데이터를 기밀로 유지하여 의도된 수신자만 데이터를 이해할 수 있도록 한다.

SSH 동작 방식

  1. 클라이언트는 서버에 SSH 연결 요청을 보내 프로세스를 시작한다.
  2. 연결 요청을 받으면 서버는 클라이언트에 챌린지 문자열을 보내며, 이 챌린지는 클라이언트의 신원을 확인하는 데 사용되는 랜덤 문자열이다.
  3. 클라이언트는 챌린지 문자열을 수신하고 개인 키를 사용하여 이를 암호화한다. 그런 다음 클라이언트는 암호화된 챌린지를 서버로 다시 보낸다.
  4. 공개 키를 가진 서버는 클라이언트가 보낸 챌린지 문자열의 암호를 해독하려고 시도한다. 서버가 공개 키를 사용하여 챌린지를 성공적으로 해독하고 결과가 원래 챌린지 문자열과 일치하는 경우 클라이언트가 올바른 개인 키를 보유하고 있음을 확인하여 클라이언트를 인증한다.

ssh-workflow

This post is licensed under CC BY 4.0 by the author.