[SSH] SSH 기초

Yong·2022년 8월 1일
0

Secure SHell, SSH 소개

클라이언트가 네트워크에 접근할 수 있도록 해주는 프로토콜은 다양하다.
그 중 SSH 두 장치간 통신을 하기위해서 shell을 사용하는 프로토콜이다. shell은 OS와 통신을 할 수 있도록 해주기때문에 서버에 원격으로 접속이 가능하다.

SSH의 주요 기능은 많지만 그 중에서 SSH의 가장 큰 이점은 암호화(Encryption)이다. 암호화를 통해서 Host와 Client 간의 데이터 전송의 보안을 보장해줄 수 있다.

Host는 우리가 접근을 할 수 있는 원격 서버를 의미하고 클라이언트는 우리가 사용하는 컴퓨터라고 말할 수 있다.

ssh 접속하기

ssh에 접속하기 위해서 커맨드 창에서 다음 명령어를 입력하면 접속이 가능하다.
ssh {user}@{host}
user는 root가 디폴트로 되어있을것이다. host에는 ip주소 혹은 도메인주소.

SSH 작동 방식

SSH의 암호화 방식에는 크게 세가지가 있습니다.

  • 대칭 키 암호 (Symmetric Encryption)
  • 공개 키 암호 (Asymmetric Encryption) 혹은 비대칭 키 암호
  • 해시 (Hasing)

대칭 키 암호

대칭 키 암호는 하나의 비밀키를 클라이언트와 서버가 모두 사용합니다.
해커가 비밀키를 알고 있다면 암호화된 내용을 해독할 수 있어서 보안에 취약할 수 있습니다.

공개 키 암호

암호화와 복호화에 사용하는 키가 다른 방식이다.
공개키와 비밀키가 있다.

실제로는 복잡한 과정이지만 개념만 설명하자면,
클라이언트가 서버에 메시지를 보낸다고 가정했을때, 클라이언트는 서버의 공개키를 받아 암호화한 뒤 메시지를 보낸다.
서버는 서버의 비밀키를 사용해 메시지를 복호화한다.

+) 실제로 암호화에 쓰이는 알고리즘인 Difiie Hellman Key Exchange 알고리즘이 있습니다. 이 부분은 조금 더 공부를 하도록 하겠습니다.

해시

해시 알고리즘은 패킷의 무결성을 확인하기 위해서 사용이 됩니다.

클라이언트 관점에서 서버 인증을 하는 과정은 다음과 같습니다.

  • 클라이언트에서 난수를 생성하고, 난수 해시값을 생성 및 저장
  • 난수를 서버의 공개키로 암호화 후 서버에 전송
  • 서버에서 서버의 비밀키로 데이터를 복호화하여 난수를 추출함
  • 서버에서 복호화된 난수 해시값을 생성 후 클라이언트에게 전송
  • 클라이언트에 저장된 난수 해시값과 서버에서 받은 해시값을 비교하여 인증
profile
If I can do it, you can do it.

0개의 댓글