일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 사이드 프로젝트
- 정렬 기준
- 스트림
- 현장실습 IT
- DNS동작원리
- Executors
- 숭실대
- 프로그래머스
- 스프링
- 위키 탭
- REST
- 자바
- NAVER D2
- Spring
- 스프링 회원가입 인증
- excalidraw
- 현장실습
- nurigo
- 인턴
- 개발자 디자인
- ssh
- OpenAI
- 값 객체
- 스터디 관리
- 셀레니움
- 위키 꾸미기
- 문자 인증
- 잘하고싶다..
- aws ec2
- Java
- Today
- Total
뭐요
시큐어 셸 (Secure Shell, SSH) 이해하기 본문
왜 알아보았는가
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 동작 과정
- 작동 원리를 설명하면서 Client와 Server는 서로 인증 후에 데이터를 주고받는다고 했다. 인증을 하기 위해 Client 혹은 Server에서 비대칭키를 생성하여 Key Pair를 만든다.
- 예를 들어, Client가 비대칭키를 만들었다고 하자. 개인키와 공개키가 생성되었을 것이고, 공개키는 Server로 전송한다. 이때 공개키는 말 그대로, 누구나 가질 수 있기 때문에 유출되어도 상관없다.
- Client가 Server에게 인증을 요청하면, Server에서 공개키로 랜덤 한 값을 생성하여 Client로 전송한다.
- Client는 Server로부터 받은 값을 개인키로 복호화하여 다시 Server로 보낸다.
- Server에서 맞게 복호화되었는지 체크한다. 성공하면 인증이 되었기 때문에 원격 서버에 접속할 수 있다!
- 따라서 개인키는 Client와 Server의 인증 수단이므로 절대 유출되면 안 된다.
- 인증에 성공하였으니 정보를 주고받을 수 있어야 한다. 데이터 또한 암호화해서 주고받는 데, 대칭키를 이용한다.
- 하나의 대칭키를 만들어 Client와 Server가 서로 공유한다. 이후 대칭키로 데이터를 암호화해서 보내면, 대칭키를 이용하여 같은 방식으로 복호화해서 데이터를 얻는다.
- 데이터 교환이 완료되면 폐기한다. 매 접속마다 새로운 대칭키를 생성해서 암호화&복호화를 진행한다.

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
나무위키