뭐요

시큐어 셸 (Secure Shell, SSH) 이해하기 본문

Network

시큐어 셸 (Secure Shell, SSH) 이해하기

욕심만 많은 사람 2022. 9. 10. 19:03

왜 알아보았는가


Springboot로 사이드 프로젝트를 진행하고 서버를 띄우기 위해 AWS EC2에서 인스턴스를 생성 후 그 위에 Ubuntu를 띄워보았다. AWS EC2로 처음 작업해보는데 그냥 구글링 해서 쉽게쉽게 따라 해서 서버를 띄울 수 있었다. 다 하고 나니까 .pem 파일을 받았고, 명령어 따라 쳐서 서버 접속해보니 ssh 방식의 서버 원격 접속이라길래 궁금했다. 별 이유는 없다.

 

 

 

 

SSH 개념


  • 서버 원격 접속을 하는 데 보안에 있어서 가장 대표적이고 유용한 수단이다. 원래 주로 텔넷(Telnet)을 사용했는데 암호화를 제공해주지 않아 보안에 취약함.
  • Secure SHell : 원격 Host에 접속하기 위한 보안 프로토콜
What is 셸?
운영 체제에서 커널과 이용자 사이에 끼어서 이용자의 명령을 해석하고 그 처리 결과를 뿌려주는 시스템 프로그램.
[출처 : 나무위키]
What is 프로토콜?
컴퓨터들 간의 원활한 통신을 위해 지키기로 약속한 규약. 프로토콜에는 신호 처리법, 오류처리, 암호, 인증, 주소 등을 포함한다.
[출처 : 나무위키]

 

 

SSH 작동 원리


SSH가 어떤 원리로 동작하는지 알아보고 그 뒤에 동작 과정을 알아보자.

SSH를 구성하는 가장 큰 핵심은 Key이다. 사용자(Client)와 호스트(Server)는 각각 Key를 보유하고 이 Key를 이용해 인증 후 안전하게 데이터를 주고받는다. 따라서 SSH의 높은 보안성은 이 Key에서 나온다. 구체적인 동작 과정을 알아보기 전에 Key에 대한 간단한 용어 정리부터 하고 가자.

키를 생성하는 방식에는 대칭키, 비대칭키(공개키)가 있다.

 

대칭키

  • 어떤 정보를 암호화, 복호화할 때 사용하는 키가 동일(대칭) 한 경우
  • 대칭키를 통해 정보가 암호화되면 복호화하기 위해 똑같은 대칭키가 존재해야 한다.

비대칭키

  • 어떤 정보를 암호화, 복호화할 때 사용하는 키가 서로 다른 경우.
  • 공개키와 개인키, 두 개가 존재하며 이 둘을 Key Pair라고 부른다.
  • 대칭키와 다르게 공개키로 정보를 암호화하고 개인키로 복호화한다.

보통 공개키의 경우 .pub, 개인키의 경우 .pem의 파일 형식을 띠고 있다.

 

 

SSH 동작 과정


  1. 작동 원리를 설명하면서 Client와 Server는 서로 인증 후에 데이터를 주고받는다고 했다. 인증을 하기 위해 Client 혹은 Server에서 비대칭키를 생성하여 Key Pair를 만든다.


  2. 예를 들어, Client가 비대칭키를 만들었다고 하자. 개인키와 공개키가 생성되었을 것이고, 공개키는 Server로 전송한다. 이때 공개키는 말 그대로, 누구나 가질 수 있기 때문에 유출되어도 상관없다.


  3. Client가 Server에게 인증을 요청하면, Server에서 공개키로 랜덤 한 값을 생성하여 Client로 전송한다.


  4. Client는 Server로부터 받은 값을 개인키로 복호화하여 다시 Server로 보낸다.


  5. Server에서 맞게 복호화되었는지 체크한다. 성공하면 인증이 되었기 때문에 원격 서버에 접속할 수 있다!


  6. 따라서 개인키는 Client와 Server의 인증 수단이므로 절대 유출되면 안 된다.


  7. 인증에 성공하였으니 정보를 주고받을 수 있어야 한다. 데이터 또한 암호화해서 주고받는 데, 대칭키를 이용한다.


  8. 하나의 대칭키를 만들어 Client와 Server가 서로 공유한다. 이후 대칭키로 데이터를 암호화해서 보내면, 대칭키를 이용하여 같은 방식으로 복호화해서 데이터를 얻는다.


  9. 데이터 교환이 완료되면 폐기한다. 매 접속마다 새로운 대칭키를 생성해서 암호화&복호화를 진행한다.



 

Example


  • Github
  • AWS 인스턴스 서버

 

 

 

KEYWORD 그리고 생각 정리


  • SSH
  • 보안 프로토콜
  • 대칭키
  • 비대칭키
  • 개인키
  • 암호화 및 복호화

SSH 방식의 원격 접속 방식이 보안성이 높다고 한 이유를 알 것 같다. 안전한 채널을 구성한 뒤에, 한 번 더 공개키로 데이터를 암호화해서 정보를 교환한다.


SSH에 대해 알아보았다. 이젠 SSH가 무엇인 지 누군가 물어보면 설명 정도는 할 수 있을 것 같다. 아마 나처럼 가벼운 마음으로 궁금해서 SSH를 알아보고자 하는 사람에게 도움이 되지 않을까?

혹시 SSH에 대해 더 많은 정보를 알고 싶다면 해당 사이트를 방문하면 좋을 것 같다.

https://www.ssh.com/academy/ssh/command

 

ssh command usage, options, and configuration in Linux/Unix.

ssh command usage, options, and configuration in Linux/Unix.

www.ssh.com

 

 

 

 

 

 

 

 

[참고 사이트]

https://library.gabia.com/contents/infrahosting/9002/

https://choco4study.tistory.com/32

https://universitytomorrow.com/22

나무위키