01. SSH(Secure Shell)란
SSH: 네트워크 상에서 다른 컴퓨터를 통해 PC를 원격으로 조작할 수 있게 해주는 프로토콜
- Shell을 사용하여 원격으로 외부 PC를 조작한다.
- 이때 PC를 조작하는 명령들은 대칭키와 비대칭키를 활용하여 암호화 된다.
- 때문에 기존의 Telnet 프로토콜보다 보안상 뛰어나다.
02. SSH 통신 사용 사례 및 예시
- SSH 통신은 주로 서버 PC를 원격으로 조작하기 위해 사용된다.
- 운영 환경에서 서버 PC는 별도의 서버실에 존재하거나, 또는 클라우드 플랫폼을 사용하여 구축된다.
- 이때 서버 PC를 조작하기 위해 매번 서버실에 출입하기에는 번거롭다.
- 이런 경우 SSH 프로토콜을 사용하여 개인 PC에서 원격으로 서버 PC를 조작할 수 있다.
PuTTY
,Xshell
등의 클라이언트 등을 사용해 쉽게 이용할 수 있다.-
03. SSH 통신 과정
SSH 통신 과정을 이해하기 위해서는 우선 대칭키, 비대칭키 의 개념을 이해하고 있어야 한다.
이에 관해 이전에 작성한 포스팅을 보고 오면 아래 내용의 이해가 수월할 듯 하다.


- 클라이언트 환경에서 서버의 PC를 조작하고자 한다.
- 초기 연결 설정
- 클라이언트는 서버의 공개키를 저장해둔다.
- 세션키 생성 및 교환
- 세션키: 이후 클라이언트가 서버에 전송할 메세지를 암호화 하기 위한 대칭키
- 클라이언트는 임의의 세션키를 생성
- 클라이언트는 서버의 공개키를 사용하여 세션키를 암호화
- 서버는 전달받은 암호문을 자신의 개인키로 복호화
- 이렇게 전달받은 세션키는 이후 통신에 사용됨
- 사용자 인증
- 서버가 클라이언트의 권한 등을 식별하는 과정
- 비대칭키, 비밀번호 등을 통해 클라이언트를 식별한다. 위 그림에서는 비대칭키를 통한 방법으로 설명한다.
- 클라이언트는 비대칭키 쌍을 가지고 있으며, 해당 공개키는 서버에 이미 등록되어있음
- 해당 비대칭키는 연결할 때 마다, 매번 생성하는 것이 아니고 최초 한번한 생성
- 최초에 생성된 공개키는 서버에 등록, 개인키는 클라이언트에 저장시켜두어야함
- 서버는 클라이언트의 인증을 위해 임의의 데이터(챌린지 데이터)를 클라이언트에게 전달
- 클라이언트는 자신이 소유한 개인키를 사용하여 챌린지 데이터를 암호화하여 서버에 전달
- 서버는 전달받은 암호문을 서버에 미리 저장된 클라이언트의 개인키를 통해 복호화
- 이렇게 복호화된 데이터와 원본 챌린지 데이터를 비교하여, 클라이언트를 식별
- 만약 개인키를 소유하지 않은 외부 PC에서, 임의의 키로 암호화한 경우, 서버에서 제대로 복호화 되지 않음
- 암호화된 통신
- 사용자 인증이 완료되었으면, 2번 과정에서 전달받은 세션키를 사용하여 암호화된 데이터를 주고 받음
'Back End > 서버 지식' 카테고리의 다른 글
IP 주소와 서브넷 마스크 개념 (3) | 2024.10.10 |
---|---|
[CI/CD] CI/CD 개념과 GitHub Actions 기초(1) (5) | 2024.10.03 |
대칭키와 비대칭키 (0) | 2024.09.21 |
컨테이너(Container)와 도커(Docker)의 개념 (1) | 2024.09.20 |