배경
- 외부망에서 내부망 PC를 원격 접속하려면, Chrome Remote Desktop, 팀뷰어, 점프데스크톱 등을 사용하면 간단하다.
- 윈도우 Remote Desktop을 사용하여 원격 접속 하고싶다면, 내부망 공유기에서 포트포워딩 설정해도 간단히 해결 가능하다.
- 아래 방법은 윈도우 Remote Desktop를 통해 원격접속 하고 싶고, 내부망의 공유기 설정을 만지지 못하는 경우(학교, 회사 등)를 위한 해결책이라 할 수 있다.
- 윈도우 Remote Desktop을 기준으로 작성하였지만 포트번호만 수정하면, 웹서버, DB 등 다른 서비스들 또한 외부에서 접속하도록 응용할 수 있다.
준비물
- 내부망 PC (ex. 학교, 회사 PC 등)
- 외부망 PC (ex. 개인, 가정 PC)
- (외부망 PC에 공유기가 있다면) 외부망 PC가 연결된 공유기
방법
- step 바로뒤에 있는 다음 괄호는 해당 작업을 진행해야할 대상이다
Step1. (외부망PC / 내부망PC) OpenSSH 설치
- 내부망 PC에 OpenSSH 클라이언트 설치
- 외부망 PC에 OpenSSH 서버 설치
- 윈도우 검색 > 선택적 기능
- 선택적 기능 추가 클릭 후, 내부망 PC는 OpenSSH 클라이언트, 외부망 PC는 OpenSSH 서버를 설치 (필자는 이미 설치되어있다)
Step2. (외부망 PC) sshd_config 파일 수정
- powershell을 관리자 권한으로 실행 후, 서비스 시작 및 서비스 자동실행 등록
# 서비스 시작 Start-Service sshd #서비스 자동실행 등록 Set-Service -Name sshd -StartupType 'Automatic' # 참고) 서비스 종료 Stop-Service sshd
C:\ProgramData\ssh\sshd_config
파일에 아래 내용 추가
AllowTcpForwarding yes GatewayPorts yes TCPKeepAlive yes
- 수정 후 sshd 서비스 재시작
Step3. (외부망 PC 공유기) 포트포워딩 설정
PC가 공유기 없이 인터넷에 직접 연결되어 있다면, Step3를 생략하고 Step3 대신에 외부망PC에서 아래 내용 진행 필요하다.
1. sshd_config파일의 기본 포트를 다른 포트로 변경
2. 변경된 포트를 윈도우 방화벽 인바운드 규칙으로 추가
Step3. 내용은 ipTIME 공유기 기준으로 작성되었습니다.
- 브라우저에서 192.168.0.1 접속
- 포트포워드 설정
- 외부 포트는 원하는데로 지정
- 내부 포트는 22번을 사용
- 내부 IP주소는 현재 접속된 IP주소를 사용
- (선택) DDNS 설정
- 일반적으로 가정/개인 PC는 주기적으로 IP가 변경된다.
- DDNS는 이러한 유동 IP에 고정된 도메인을 연결시켜 주는 기능
- 아래 메뉴에서 설정 진행
Step4. (내부망 PC) ssh를 통해 외부망 PC에 접속
- cmd에서 아래 코드 실행
# 내부망 PC의 원격 데스크톱 포트(3389)를 외부망의 {원하는port}로 연결하겠다는 의미 ssh -R {원하는port}:localhost:3389 {외부망PC 계정명}@{외부망PC의 IP 또는 DDNS} -p {Step3에서 설정한 외부포트}
- {원하는prot}: 외부PC에서 접속할 임의의 Port 원하는데로 지정
- {외부망PC 계정명}: 외부망 PC의 계정명. 외부망 PC의 cmd에서 whoami로 확인 가능
- {외부망PC의 IP 또는 DDNS}: 외부망 PC의 IP 또는 DDNS를 입력
Step5. (외부망 PC) 윈도우 Remote Desktop을 통해 내부망 PC 접속
- 원격 데스크톱 실행
- 원격 데스크톱 컴퓨터 창에
localhost:{원하는port}
입력하여 접속