본문 바로가기

Infra

SSH 리버스 프록시 기반 원격 지원 시스템 구성 가이드

이 포스트는 내부망에 위치한 A/S PC에 외부에서 안전하게 접속할 수 있도록 SSH 리버스 프록시를 활용하는 방법을 안내합니다.

두 가지 구성 방식을 포함하고 있습니다:

  1. 사용자 제어형 구성 (On/Off 연결 방식) 즉, 사용자가 제어하는 경우
  2. 운영자 자동 연결 유지형 구성 (지속 연결 방식) 즉, PC의 관리자가 제어하는 경우

구조도와 함께 실제 작동 원리는 아래와 같습니다.


전체 구성도

 

1. 사용자 제어형 구성 (On/Off 제어 방식)

구성 설명

이 방식은 A/S PC 사용자가 지원이 필요할 때 직접 명령어를 실행하여 Proxy PC에 리버스 터널을 생성하고, 지원이 끝나면 연결을 끊는 구조입니다. Client PC는 Proxy PC를 통해 터널링된 포트로 A/S PC에 접속합니다.

  • 포트가 필요한 시점에만 열리므로 보안상 유리합니다.
  • 데몬이나 systemd 없이 단발성 실행만으로 구성할 수 있어 간단합니다.

튜토리얼: 사용자 제어형 구성

1. Proxy PC 설정

sudo nano /etc/ssh/sshd_config
AllowTcpForwarding yes
GatewayPorts yes
sudo systemctl restart sshd

2. A/S PC에서 수동 연결 요청

ssh -N -R 10022:localhost:22 user@proxy_ip

3. Client PC에서 접속

ssh -p 10022 user@proxy_ip

2. 운영자 자동 연결 유지형 구성 (자동 리버스 터널)

구성 설명

이 방식은 A/S PC에서 지속적으로 Proxy PC로 리버스 SSH 터널을 유지하는 구조입니다. 연결이 끊기더라도 autossh 또는 systemd가 자동으로 복구하며, Client PC는 언제든지 Proxy PC를 통해 A/S PC로 접속할 수 있습니다.

  • 지원 대기 상태 유지에 적합하며 운영자가 상시 점검할 수 있습니다.

튜토리얼: 자동 연결 유지형 구성

1. Proxy PC 설정

AllowTcpForwarding yes
GatewayPorts yes

 

sudo systemctl restart sshd

2. A/S PC에서 autossh 사용

sudo apt install autossh
autossh -M 0 -f -N -R 10022:localhost:22 user@proxy_ip

(선택 사항) systemd 서비스 등록

[Unit]
Description=Reverse SSH
[Service]
ExecStart=/usr/bin/autossh -M 0 -N -R 10022:localhost:22 user@proxy_ip
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable reverse-ssh
sudo systemctl start reverse-ssh

3. Client PC에서 접속

ssh -p 10022 user@proxy_ip

비교 요약

항목 사용자 제어형 운영자 자동 유지형
연결 시점 필요할 때 수동 실행 항상 연결 유지됨
제어 주체 A/S PC 사용자 서버 운영자 or 자동화
구성 복잡도 낮음 중간 이상
보안성 높음 (필요 시만 연결됨) 상대적으로 낮음 (항상 연결)
적합 대상 요청 기반 A/S 환경 상시 모니터링/대기 환경

확인 명령어

# 리버스 포트 열림 확인 (Proxy PC)
ss -lptn 'sport = :10022'

# SSH 연결 프로세스 확인 (A/S PC)
ps aux | grep ssh

이 포스트는 A/S 환경에서 원격 접속을 위한 리버스 프록시 설계에 필요한 기술적 지침을 제공하며, 다양한 현장 환경에 맞게 조정하여 사용할 수 있습니다.