TLDR
(local)~$ ssh -L [로컬에서 사용할 포트]:[최종적으로 접근할 곳] [SSH Server 주소]
(server)~$ ssh -R [SSH Client가 사용할 포트]:[최종 목적지] [SSH Client 주소]
SSH는 기본적인 접속 기능 외에도 'SSH 포트 포워딩' 또는 'SSH 터널링 기능' 이라고 불리는 것을 제공한다.
80 포트를 사용하는 서비스와 SSH 서버를 엮은 뒤 SSH 터널링을 생성하고, 사용자가 서비스를 요청하면 해당 요청은 SSH 서버로 전송된 뒤 A 서버 내부에서 다시 포워딩된다. SSH 서버는 터널링을 통해 데이터를 주고받을 수 있게 해주는 일종의 프록시의 역할을 수행하게 된다.
SSH 포트 포워딩은 연결을 수립하는 주체가 누구냐에 따라 Local과 Remote로 구분할 수 있다.
1. Local은 SSH Client -> SSH Server로 연결을 수립하는 경우이다
SSH Client에서 ssh -L [로컬에서 사용할 포트]:[최종적으로 접근할 곳] [SSH Server 주소] 형식으로 입력한다.
2. Remote 포트 포워딩은 SSH Server -> SSH Client 로 연결을 수립해 SSH 터널을 생성한다. Outbound 트래픽은 허용되는 상황이므로 SSH Server -> SSH Client로 SSH 터널(SSH 연결)을 생성한 뒤, SSH Client는 SSH Server가 접근 가능한 네트워크에 접속해 데이터를 주고 받는 방식이다.
SSH Server 에서 ssh -R [SSH Client가 사용할 포트]:[최종 목적지] [SSH Client 주소] 와 같은 형식으로 SSH 포트 포워딩을 실행한다. SSH Client에서도 SSH 데몬이 실행 중이여야만 한다. SSH Server에서 SSH Client로 SSH 연결을 수립하기 때문이다.
어찌 보면 보안상으로 취약하다고 말할 수 있다. Firewall 단에서 모든 포트로 들어오는 Inbound 트래픽을 차단해도 Outbound 트래픽을 통해 내부 네트워크에 자유롭게 접근할 수 있기 때문이다. 따라서 SSH 연결이라고 해서 무조건 Trust한 패킷만 오고 간다고 볼 수는 없다.
=====================
[원본 소스]
1. 그림으로 이해하기
https://jusths.tistory.com/102
https://blog.naver.com/PostView.naver?blogId=alice_k106&logNo=221364560794
2. 글로 이해하기
https://www.ssh.com/academy/ssh/tunneling/example
'Developing.. > POSIX:Linux' 카테고리의 다른 글
LINUX - 계정 추가 : ADDUSER (0) | 2022.07.08 |
---|---|
file link / ln 명령어 (0) | 2022.06.08 |
오랜만에 git 다시 쓰기 (0) | 2021.05.27 |
셀 스크립트 정리 (0) | 2021.02.09 |
git 협업 이슈/팁 정리 (0) | 2021.02.05 |