일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apollo router
- AWS
- UnBuffered channel
- Infra
- tenneling
- Buffered channel
- AWS Infra
- Logrus
- 윈도우키보드
- body size
- GoF 디자인패턴
- notification system
- golang
- goland
- go
- Golines
- 컴포지트패턴
- http 413
- Helm V3
- 대규모 시스템 설계
- GoF
- intellij ide
- 배포 프로세스
- Bastion Server
- gitops
- Intellij
- System Design
- 디자인패턴
- Kubernetes
- 배포 파이프라인
- Today
- Total
Fall in IT.
SSH 터널링 간단하게 알아보기 본문
SSH란?
-
Secure Shell의 약자
-
손쉽게 PC에 접근하는 방식을 제공하기 위해 만들어진 프로토콜
SSH의 역할
-
인증 (Authentication)
-
사용자와 서버를 이증하는 역할을 한다.
- public key와 private key를 사용하는 비대칭 암호방식을 사용한다. private key는 외부 유출없이 가지고 있고 public key만 네트워크를 통해 전달해놓고 인증하는 방식이다.
-
클라이언트에서 서버에 접속할때 사용자를 인증해야 하는데 이때 전통적인 패스워드 인증방식과 더불어서 사용된다.
-
-
암호화 (Encryption)
-
SSH는 네트워크를 통해 전달되는 데이터를 암호화한다.
-
그래서 누군가 중간에 데이터를 가로채더라도 내용을 알 수 없다.
-
-
무결성 (Integrity)
-
네트워크를 통해 전달받은 데이터가 변경되지 않았음을 보장한다.
-
-
압축 (Compression)
-
SSH 연결을 통해 보낸 데이터를 압축할 수 있다.
-
SSH 클라이언트/서버 사이에서 데이터를 전송하기 전에 압축하고 이를 암호화해서 전송한다.
- 데이터를 받는 쪽에서는 복호화 작업을 거친 후 압축을 해제하고 사용한다.
-
SSH Tunneling
-
ssh 클라이언트와 서버 사이에 연결이 이루어지면 이를 터널링이라고 한다.
-
여기에 포트 포워딩(Port Forwarding)이란 기술을 더해서 다른 어플리케이션에 접근을 할 수 있다.
-
터널링을 통해서 방화벽을 우회할 수 있다. (ssh 서비스가 방화벽에 의해 차단되지만 않는다면…)
터널링의 종류
-
Local port forwarding
-
$ ssh -L 포트번호1:호스트명:포트번호2 서버명
-
포트번호1은 클라이언트가 검사(listen)하고 있을 포트번호를 지정하는 것이다.
-
이 포트번호1로 데이터가 왔을때 SSH 클라이언트가 SSH 서버로 데이터를 전송하고
-
SSH 서버는 이 데이터를 다시 호스트명의 포트번호2로 데이터를 보내준다.
-
예를들면, 사용자 A의 컴퓨터에서 B 서버에 있는 www.test.com 사이트에 접속하고자 하는데
-
A 컴퓨터에서 웹서핑을 못하도록 80포트를 막아 놓았을 경우, SSH 포트인 22번 포트가 열려있고, B 서버에 ssh 서버가 동작하고 있다면 ssh 터널링을 통해 80포트가 아닌 다른 포트로 포워딩하여 우회하여 접속이 가능하다.
-
-
-
Remote port forwarding
-
$ ssh -R 포트번호1:호스트명:포트번호2 서버명
-
이때 포트번호1은 SSH서버가 검사(listen)하고 있게 되고
-
여기로 데이터가 왔을때 SSH 클라이언트에게 데이터를 전송하고
-
클라이언트는 호스트명의 포트번호 2로 데이터를 전송한다.
-
참조
'기타' 카테고리의 다른 글
웹 성능 최적화에 대해여 (0) | 2020.11.05 |
---|---|
Mac에서 전역 실행될 script를 설정하는 방법 (0) | 2020.08.31 |
유지보수하기 좋은 깔끔한(?) 코딩 기법 (0) | 2020.06.26 |
Mac OS, SSH Client Termius 사용하여 AWS 연결하는 방법 (2) | 2020.01.06 |
Visual Studio Code에서 html파일 웹에 실행하는 방법 (0) | 2019.11.18 |