관리 메뉴

밤 늦게까지 여는 카페

ssh tunneling 사용 방법 - 이것만 있으면 가벼운 노트북으로도 원격 개발 가능! 본문

유용한 툴/ssh

ssh tunneling 사용 방법 - 이것만 있으면 가벼운 노트북으로도 원격 개발 가능!

Jㅐ둥이 2024. 8. 12. 22:35

안녕하세요. 오늘은 출장 때마다 매번 사용하고 있는 ssh tunneling 기능을 소개해드리려고 합니다.

 

ssh tunneling 네트워크 연결 끊겼을 때 복구 안되는 현상 - ExitOnForwardFailure 옵션 에서 간단하게 ssh tunneling이 무엇인지 설명드렸는데

이번에는 구체적으로 어떻게 사용할 수 있는지 예시를 통해 알려드리겠습니다.

 

ssh tunneling 기능을 사용하기 위해 필요한 프록시 서버 설정, 서버 설정, 클라이언트 설정을 순서대로 진행해보겠습니다.

  • 이 방법대로 진행하시면 가벼운 노트북만 들고 다니면서 홈 서버의 설정을 그대로 사용할 수 있습니다!

1. 프록시 서버 설정

제가 원하는 것은 카페나 도서관에서 노트북으로 홈 서버에 접속하는 것입니다.

하지만 홈 서버는 고정 퍼블릭 IP를 가지고 있지 않아서 바로 연결할 수 없습니다.

 

이 때 프록시 서버를 이용해서 홈 서버에 접속할 수 있습니다.

최종적으로 원하는 그림

 

위의 그림과 같이 제가 보내는 명령어가 프록시 서버를 경유해서 홈 서버로 전달되는 것인데요.

이를 위해서는 프록시 서버에도 여러 준비가 필요합니다.

1.1. openssh-server 설치

일단 ssh 서버로서 동작할 수 있어야 하기 때문에 openssh-server 패키지가 필요합니다.

다음 명령어를 이용해서 프록시 서버에 openssh-server 패키지를 설치합니다.

# Ubuntu
sudo apt install openssh-server

# Fedora
sudo dnf install openssh-server

 

1.2. ssh server 설정 변경

openssh server 패키지가 설치되었다면 이제 프록시 서버로서 동작할 수 있도록 설정을 변경해야 합니다.

 

/etc/ssh/sshd_config 파일에서 AllowTcpForwarding, GatewayPorts 옵션을 yes로 바꿔줍니다.

...
AllowTcpForwarding yes
GatewayPorts yes
 ...

변경 전
변경 후

 

파일을 변경하고 나서는 다음 명령어를 실행해서 변경된 설정을 적용시킵니다.

  • sudo systemctl restart sshd
  • sudo systemctl status sshd 명령어로 ssh 서버가 재실행된 것을 확인할 수 있습니다.

sudo systemctl status sshd 명령어로 ssh 서버가 재실행된 것을 확인

1.3. 네트워크 정책 수정

프록시 서버로 ssh 접속이 가능하도록 네트워크 정책이 수정되어야 합니다.

 

AWS의 EC2 인스턴스라면 ssh 접속이 가능하도록 보안 그룹을 수정하면 되고,

실제로 서버를 운영하고 있다면 공유기나 스위치의 방화벽 정책을 수정하면 됩니다.

 

예를 들어, 프록시 서버의 22222 포트를 통해서 홈 서버의 22 포트를 접속하는 것이라면

프록시 서버로 22222포트 접속이 가능하도록 네트워크 정책을 수정해야 합니다.

 

저는 EC2 인스턴스를 프록시 서버로 사용해서 보안 그룹에 인바운드 규칙을 추가했습니다.

보안 그룹의 인바운드 규칙에 TCP 22222 포트 추가

2. 홈 서버 설정

프록시 서버 설정이 끝났다면 남은 것은 간단합니다.

 

홈 서버에도 openssh-server 패키지를 설치한 후에 프록시 서버의 포트를 홈 서버의 ssh 서버 포트로 포워딩 시키면 됩니다.

 

위의 예와 동일하게 프록시 서버의 22222 포트를 홈 서버의 22 포트로 포워딩 시켜보겠습니다.

다음 명령어를 홈 서버에서 실행시킵니다.

  • ssh -fNT -R 22222:localhost:22 user@server.ip -i server.pem

프록시 서버로 사용할 ec2 인스턴스의 22222 포트를 홈 서버의 22 포트로 포워딩

3. 클라이언트에서 접속하기!

이제 준비는 끝났습니다!

 

프록시 서버의 22222 포트로 접속하면 홈 서버가 뜹니다!

홈 서버로 접속 성공!

반응형