예를 들어 backend에서만 접근이 가능한 파일이 있다.
그랬을 경우 로컬에서 backend를 운영한다고 해도 서버에서 있는 값과 동일한 실행을 할수가 없다.
왜? local에서는 접근이 불가능하니까
그럴때 사용하기 유용한 ssh 터널링 (다른데에도 많이 사용되겠지만;;)을 사용해보자.
이글보다 아래글 들을 추천한다.
https://www.ssh.com/academy/ssh/tunneling
https://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS5064906327
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=alice_k106&logNo=221364560794
1. Tunneling 이란?
데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술
> 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송
[데이터통신] 터널링 기법
ㅇ 두 노드 또는 두 네트워크 간에 가상의 링크(VPN 등)를 형성하는 기법
- 하나의 프로토콜이 다른 프로토콜을 감싸는 캡슐화 기능을 통해 운반
※ 일반적으로 터널링 기법은,
- 대부분, 보안 채널의 역할을 하므로, 암호화 기법 적용이 일반적임
- 심지어, 엄격하게 계층화된 프로토콜들을 뒤집어 감싸서 만들 수도 있음
- 또한, 오버레이 네트워크 구성도 가능하게 함
ssh tunnelling을 기준으로 설명을 보면
아래 [그림 1]에서처럼 Host A에는 SSH 클라이언트가 설치되어 있고 Host B에는 SSH 서버가 설치되어 있다고 하자. SSH 클라이언트를 통해 SSH 서버에 접속을 하면 둘 사이에 연결이 이루어지는데 이 연결 통로를 터널이라고 한다. 암호화 등을 통해 터널처럼 외부로부터 이 연결을 보호하기 때문이다. 그래서 터널링이라고 부른다. 여기서 중요한 사실은 이러한 SSH를 통해 만든 터널을 다른 애플리케이션이 이용할 수가 있다는 것이다. 이러한 일을 가능하게 하는 것이 포트 포워딩(Port Forwarding)이란 기술이므로 포워딩이라고도 부른다.
그렇다면 이것이 무슨 의미가 있을까? 이 터널을 이용한다는 것은 곧 암호화 등의 SSH의 장점을 모두 사용할 수 있다는 것을 의미한다. 즉, 암호화를 지원하지 않는 프로그램을 안전하게 사용할 수 있다는 것이다. (참고로 TCP를 사용하는 프로그램만 지원하고 UDP 등 다른 프로토콜은 지원하지 않는다.) 다시 위의 [그림 1]을 살펴보도록 하자. Host A의 application client가 Host B의 application server로 접속할 때에 일반적으로는 직접 접속(direct connection)을 한다. 하지만 SSH 터널링을 이용하면 application client가 SSH 클라이언트에 접속을 하고 필요한 데이터를 SSH 서버를 통해 application server에 전달한다. 즉 그림에서처럼 forwarded connection을 하게 된다. 터널링은 SSH 클라이언트가 SSH 서버에 접속되어 있을 때에만 유효하고, 연결시에만 설정할 수 있다는 것에 유의하자.
출처 : https://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS5064906327
2. 준비물
ssh 터널링은 이름에서부터 ssh 접속이 가능해야 가능하다.
ssh 설정하자.
다른곳에서 봐도 되고 아래 글에서 ssh 설정쪽을 봐도 된다.
ssh key를 사용한 접속 방법은 또 찾아봐야한다.
https://24hours-beginner.tistory.com/391
3. ssh Tunneling 설정 (feat. VS Code)
간단하게 그냥 지금 있는 환경에서 확인 처리만 해보고자한다.
vscode는 너무 간단하다;;
ctrl+` 이걸하면 터미널창이 나온다. 여기서 포트창 클릭
여기서 Forward a Port를 클릭한다.
"포트" 쪽에는 "서버"쪽 포트를 적어주면 된다.
클라이언트쪽에서 작성 하였을때에는 아래와 같이 원본이 "사용자가 전달함" 이라고 나타나고
서버쪽에서 자동으로 되는 경우 원본에 "자동 전달됨" 이라고 나타난다.
다른곳에서는 putty 또는 xshell 등을 사용해서 완벽하게 통신만도 가능하다.
참조
https://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS5064906327
http://www.terms.co.kr/tunneling.htm
http://www.ktword.co.kr/test/view/view.php?m_temp1=1708
https://blackrice91.tistory.com/107
https://linuxize.com/post/how-to-setup-ssh-tunneling/
https://liveyourit.tistory.com/3
https://www.ssh.com/academy/ssh/tunneling-example
https://www.ssh.com/academy/ssh/tunneling
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=alice_k106&logNo=221364560794
'프로젝트 설정 > 서버' 카테고리의 다른 글
[SERVER] Let's Encrypt 서브도메인 인증서 발행하기 (feat. webroot / ubuntu / nginx) (0) | 2023.08.17 |
---|---|
[NginX] url의 특정 부분을 argument로 받기 (feat. chatGPT) (0) | 2023.02.22 |
[NginX] 도메인(domain) 연결하기 (feat. Godaddy) (0) | 2022.11.25 |
[nginx] nginx 설치 (feat. ubuntu 18.04 & 20.04) (0) | 2022.08.08 |
[nginx] 정적 폴더(build) 2개 이상 연결하기 (feat. override location directive in Nginx) (0) | 2022.05.02 |