라즈베리파이를 외부에서 SSH 접속 및 원격 Remote 접속 가능하게 설정하는법

코드도사에서는 라즈베리파이(라즈비안)를 SSH로 접속하여 사용하는 방법에 대해 기술한적이 있습니다. 라즈베리파이 3 B+ 모델의 WiFi 혹은 LAN을 연결하여 네트워크를 활성화 시킨 후 SSH를 Enable를 하면 본인의 PC에서 터미널 프로그램으로(Putty, TeraTerm등) SSH로 연결하여 라즈베리파이를 사용할 수 있게 됩니다.

하지만 라즈베리파이가 공인 IP(Public IP)를 할당받지 않고, 집안에 설치되어 있는 공유기에서 받은 IP를(LAN 혹은 WIFI) 사용하고 있다면 집 내부서만 라즈베리파이를 사용할수 밖에 없게 됩니다. 즉 집 외에 회사, 학교, 까페 같은 공공 장소에서는 집에 있는 라즈베리파이를 SSH로 접속할 수 없게 되는 것이지요. 

그렇다면 라즈베리파이를 들고 다녀야 할까요? 아닙니다. 방법이 있습니다. 집안에 설치된 공유기의 설정을 변경하는 것입니다. 대표적으로 공유기의 포트포워딩이나 DMZ 설정을 해주면 됩니다. 이 설정 하나만으로도 집안에 설치된 라즈베리파이를 전 세계 어느곳에서든지 접속할 수 있게 됩니다. 

그럼 어떻게 해야 하는지 차근차근 알아보도록 하겠습니다.

IP 공유기 설정 WEB 접속하기

가장 먼저 해야 할 일은 집이나 학교등에서 사용하고 있는 IP 공유기의 WEB 설정 화면에 접속하는 것입니다. 대부분의 공유기는 기본적으로 내부에 작은 Web Server가 돌고 있어서 Web으로 공유기의 설정 및 변경을 할 수 있게 되어 있습니다. 국내에서는 제일 많이 보급되어 있는 IP Time 공유기를 예로 들어보도록 하겠습니다. 만약 다른 공유기를 보유하고 있다면, IP Time 공유기의 설정 방법을 토대로 소유하고 있는 공유기 제품의 메뉴얼을 같이 참고하면서 설정을 할 것을 권유드립니다.

먼저 공유기의 게이트웨이 IP를 알아야 하는데요, IP Time 공유기의 경우에는 Default로 192.168.0.1로 설정이 되어 있습니다. 하지만 사용자의 설정에 따라서 IP는 달라질 수 있으므로, 여기서는 간단하게 파악할 수 있는 방법을 소개해 보겠습니다. 

Windows의 실행 – cmd 를 입력합니다. 실행창이 생성되었으면 ipconfig을 입력합니다.

ipconfig를 입력하였다면 위의 화면같이 IP 주소가 나타나게 됩니다. 여기서 체크해야 될 점은 만약 WiFi로 노트북이나 PC가 연결되어 있으면 무선 LAN 어뎁터에서 IP주소를 확인해야 하고, 이더넷 LAN으로 연결되어 있다고 하면 위 사진같이 이더넷 어뎁터 쪽의 IP을 확인해야 합니다. 저는 이더넷 LAN으로 연결되어 있기 때문에 이더넷 어뎁터의 IP 주소를 확인하였습니다. 

여기서 IPv4 주소는 PC에 할당된 IP 주소입니다. 사진에서 빨간색 네모로 표시되어 있는 부분이 실제 공유기의 게이트웨이 IP 주소가 됩니다. 이 IP로 웹 브라우저에서 입력하여 접속하면 공유기의 WEB 설정 화면으로 접속 할 수 있게 됩니다. IP 주소는 각자 설정하기에 따라 다를 수 있으니 위와 같은 확인 작업을 거치는게 좋습니다.

그럼 웹브라우저에서 192.168.0.1로 접속하도록 하겠습니다. 

제 공유기는 IP Time N604S 라는 제품입니다. 위와 같은 화면이 나온다면 정상적으로 공유기의 WEB 설정 화면에 접속이 완료된 것입니다. 여기서 관리도구를 클릭합니다.

관리도구를 클릭하면 위와 같이 로그인 화면이 나타납니다. 보통 대부분의 공유기들은 관리 화면에 접속을 하려면 계정과 비밀번호를 설정하게끔 되어 있습니다. 만약 별도로 설정을 하지 않았다면 해당 제품의 메뉴얼을 참고하여 초기에는 어떻게 설정이 되어 있는지 확인하시기 바랍니다. 저는 설정한 admin 계정에 비밀번호를 입력하고 로그인을 하였습니다.

자, 공유기의 메인 설정 화면으로 접속이 되었네요. 접속 후 첫 화면에는 시스템 및 네트워크 관련 정보들이 표시됩니다. 여기서 외부 IP 주소는 추후에 필요하므로 잘 알아두시기 바랍니다. 외부 IP를 알고 있어야 전세계 어디서든 라즈베리파이를 SSH로 접근할 수 있게 됩니다. 

이제 여기서 포트포워딩 혹은 DMZ를 설정을 해야 하는데요, IP Time에서는 고급 설정 메뉴 안에 있습니다. 

고급 설정 버튼을 누르니 NAT/라우터 관리라는 메뉴가 있고, 그 하위 메뉴에 포트포워드 및 DMZ 설정이 있습니다. 그런데 전 포트포워드 설정을 하겠습니다. 왜냐하면 DMZ는 라즈베리파이의 모든 포트를 외부에서 접근할 수 있게끔 열어주는 것이기 때문에 보안상으로 좋지 않습니다. 편리하기는 하지만 보안에는 취약하므로 DMZ보다는 포트포워딩 설정을 하겠습니다.

포트포워드 설정 메뉴를 클릭합니다.

클릭하면 위 사진과 같은 포트포워딩 설정 리스트가 나오게 됩니다. 여기서 라즈베리파이가 할당된 내부 IP와 규칙 이름, 외부 포트, 내부 포트 등을 입력하여 줍니다.  아래 예를 참고하시기 바랍니다.

정의된 리스트는 사용자 정의로 선택하였고, 규칙 이름을 Pi SSH로 입력하였습니다. 내부 IP 주소는 현재 라즈베리파이가 할당된 IP입니다. 현재 라즈베리파이가 SSH가 설정되었다면 IP 주소도 알수 있을 것입니다. 그 다음 외부포트와 내부포트를 입력해야 하는데, 외부포트는 실제 외부 IP의 어떤 포트를 사용할지 정의를 해주는 것입니다. SSH의 기본 포트가 22이니 외부포트를 22로 사용해도 됩니다. 다만 SSH의 기본 22번 포트는 되도록 외부 IP에다가는 열어주지 않는게 좋습니다(SSH 공격 때문에..). 저는 그래서 9000번을 설정하였습니다. 

내부포트는 현재 라즈베리파이가 설정된 SSH가 22번이기 때문에 22로 입력을 해야 합니다. 즉 외부 IP의 9000번 포트를 내부 라즈베리파이 IP의 22번 포트와 연결을 해준다고 생각하면 쉽습니다. 그리고 프로토콜은 TCP로 설정해주면 됩니다. 이렇게 입력하고 나서 추가를 해주면 설정한 규칙이 추가가 됩니다.

위 사진을 보니 Pi SSH라는 규칙이 추가가 되었네요. 이 상태에서 오른쪽 상단의 저장 버튼을 클릭합니다. 이렇게 해야 규칙이 공유기에 저장이 됩니다. 여기까지 하였으면 공유기의 WEB 설정이 완료된 것입니다. 어렵지 않죠?ㅋ

외부(공인) IP로 라즈베리파이 SSH 접속 해보기

자 그렇다면 외부에서 집에 있는 라즈베리파이의 SSH가 접속이 잘 되는지 확인해 볼까요? 먼저 사용하고 있는 터미널 프로그램을 실행시킵니다. 저는 한글 PuTTY를 실행하겠습니다.

Putty의 실행창에서 Host Name에 좀전에 공유기 WEB 설정 화면에서 확인했던 외부(공인)IP를 입력합니다. 그리고 Port에는 포트포워딩에서 설정했던 외부 포트를 입력해 줍니다. 9000으로 설정했으니 9000을 입력해주면 됩니다. 

Connection type은 SSH로 클릭하고 아랫쪽의 Open 버튼을 누릅니다. 그리고 접속이 잘 되는지 확인해 봅니다.

짠! 접속이 잘 되네요. 이제 당신의 라즈베리파이는 전 세계 어디서든 SSH로 접속하여 사용할 수 있는 장치가 되었습니다. 이제 마음껏 라즈베리파이를 SSH로 접속하여 활용하면 되겠습니다.

원격 리모트 데스크탑 접속 설정

그런데 SSH는 뭔가 아쉬운 측면이 있습니다. 텍스트 뿐인 화면에 명령어 일색인 내용은 도통 정이 가지 않을 수도 있습니다. 하지만 라즈비안을 비롯한 리눅스 환경에서는 Command Line Shell 형태가 필수이므로 차근차근 익혀 가는게 좋습니다. 그래도 아쉬운 점은 어쩔수 없죠?ㅋ 

그래서 추가적으로 팁을 하나 전달드립니다. 라즈비안의 데스크탑 화면을 외부에서도 접근이 가능하게 설정할 수 있다는 것입니다. 원격 리모트 프로그램을 이용하면 됩니다. 라즈비안에서는 기본적으로 VNC Server라는 원격 리모트 서버를 제공하고 있습니다. 라즈비안 설치후 Default로는 활성화 되어 있지 않지만 간단하게 설정만 해주면 재부팅을 해도 자동적으로 VNC Server가 실행되게 됩니다. 

그럼 먼저 라즈비안의 데스크탑 화면으로 갑니다. Pi 아이콘 – 기본설정 – Raspberry Pi Configuration – Interface로 이동합니다. 

여기서 VNC 라는 항목이 있습니다. Default로는 Disable로 되어 있는데, 이걸 Enable로 바꿔주고 OK를 누릅니다. 그리고 재부팅을 해주면 간단하게 VNC Server가 설정이 되었습니다. 쉽죠?ㅋ

그 다음, 외부에서 라즈베리파이의 데스크탑에 접근하려면 VNC Server의 내부 포트를 포트포워딩으로 외부 포트에 연결해 줘야 합니다. 위의 SSH 포트 설정했던거와 같이 동일한 과정으로 설정하면 됩니다. VNC Server의 내부 포트는 Default로 5900 포트에 할당이 되어 있습니다. 이 5900을 저는 9100의 외부 포트로 설정하였습니다. 외부포트는 본인이 설정하고 싶은데로 하면 됩니다. 그 다음에 동일하게 공유기에서 포트포워딩 규칙을 저장합니다.

여기까지 했으면 원격 데스크탑 접속 준비가 완료된 것입니다.

VNC Viewer로 라즈베리파이 데스크탑 접속하기

자 그럼 라즈베리파이를 데스크탑으로 접속하려면 어떻게 해야 할지 알아볼까요? 먼저 VNC Viewer를 다운로드 받습니다.  아래 링크를 클릭하여 다운로드 받으면 됩니다.

VNC Viewer는 접속하는 PC의 OS 환경별로 다양한 OS를 지원합니다. 보통 PC는 Windows를 많이 사용하기 때문에 Windows용을 다운로드 받습니다.

아마 VNC Viewer 사이트에서 자동적으로 접속한 OS에 따라서 선택을 해줄겁니다. Download VNC Viewer를 클릭하여 다운로드를 진행하면 됩니다. OS가 지원하는게 많네요. 심지어 안드로이드와 iOS, 라즈베리파이까지 지원합니다. 일단 Windows용으로 다운 후 VNC Viewer를 실행시킵니다.

VNC Connect 입력 URL 창에 외부 IP와 포트포워딩때 설정했던 외부 포트를 입력하고 엔터를 누릅니다. 

만약 정상적으로 포트포워딩이 설정되었으면 위의 화면과 같이 identity Check라는 화면이 나타납니다. 여기서 처음 접속하는 관계로 체크하는 부분이니 Continue를 누르고 넘어가면 됩니다. 

다음에는 Username과 Password를 입력하는 창이 나타납니다. Username은 pi로 Password를 본인이 설정한 라즈비안의 Password를 입력해주면 됩니다. 그럼 접속이 되는지 확인해 볼까요?

와우 접속이 됩니다. 이제 VNC Viewer로 전 세계 어디서든지 라즈베리파이의 데스크탑 화면을 접속 할 수 있게 되었습니다. 이제 마음껏 라즈베리파이를 원격으로 접속하여 활용하시기 바랍니다.

'코드도사(codedosa.com)'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.