저는 리눅스에서만 개발 환경을 구성해놔서요, 윈도우에서는 개발 도구를 어떻게 설치하는지조차 모릅니다. 그러다 보니 개발을 할 일이 있으면 리눅스가 필요한데요, 일부 프로그램은 카카오톡이라든가 카카오톡이라거나 카카오톡 리눅스 설치를 지원하지 않고, 대체 프로그램도 마땅치 않아서 윈도우가 절실할 때가 많죠.

그래서 보통은 PC를 두 대 켜놓고 두 환경을 같이 써요. 이처럼 두 환경을 같이 쓰는 것은 두 가지 방법이 있는데, 이번에 소개하는 방법은 RDP 프로토콜을 사용하여 리눅스 머신에 원격 접속하는 방법입니다.


RDP?

RDPRemote Desktop Protocol는 마이크로소프트가 개발한 원격 접속 프로토콜입니다. 윈도우의 원격 데스크톱 연결 도구가 이 프로토콜을 사용하죠. 가정용 윈도우에서는 기본적으로 비활성화되어 있는데요, 윈도우 설정에서 해당 옵션을 활성화하고 윈도우 계정에 비밀번호를 설정하면 같은 로컬 네트워크 안에 있는 다른 PC에서 원격 접속할 수 있어요.

이렇게 한 PC에서 다른 PC로 연결하는 방법은 이것 말고도 VNCVirtual Network Computing나 팀뷰어, 애니데스크같은 프로그램도 있으나, RDP를 제외하고는 모두 별도의 프로그램을 설치해야 하니 일단 RDP를 설치해 보겠습니다.

이 글은 Linuxize우분투 20.04에 xrdp 설치하는 법을 기초로, 각 과정이 왜 필요한지를 다시 한번 되짚으며 정리했습니다.

xrdp 설치

앞서 말했듯 RDP는 마이크로소프트가 개발한 프로토콜이고, 이 기술은 당연히 마이크로소프트의 재산이므로, 오픈 소스 진영에서는 RDP에 호환되는 구현을 xrdp라는 이름으로 만들었습니다. 그래서 우리는 리눅스에 xrdp 서버를 설치하여 윈도우의 원격 데스크톱 연결 도구로 접속할 수 있게 할 거예요.

(Optional) Xubuntu Desktop 설치

$ sudo apt update
$ sudo apt install xubuntu-desktop

원격 데스크톱 접속을 위해서는 데스크톱 그래픽 환경이 필요하겠죠? 보통은 리눅스를 설치할 때 같이 설치가 되겠지만, 데스크톱 환경이 없는 서버 버전을 설치했을 때는 별도 설치가 필요합니다.

Linuxize의 글에서는 Ubuntu Desktop (Gnome용) 이나 Xubuntu Desktop (Xfce용) 을 선택하여 설치할 수 있다고 하는데요. 제 경험상 Xfce를 제외한 다른 데스크톱 환경은 xrdp가 잘 지원되지 않아요. 그러니까 Xfce를 설치하는 것이 좋습니다.

Zorin OS Lite는 설치할 필요가 없어요! Zorin OS Lite의 데스크톱 환경이 Xfce 기반이거든요!

xrdp 설치

$ sudo apt update
$ sudo apt install xrdp
$ sudo systemctl status xrdp

이제 xrdp를 설치합니다. 보통은 별 문제 없이 설치되어, sudo systemctl status xrdp으로 xrdp의 동작 상태를 확인해 봐도 잘 돌고 있다는 메시지만 확인할 수 있을 거예요.

xrdp에 SSL 인증서 접근 권한 추가

$ sudo adduser xrdp ssl-cert

xrdp 계정을 ssl-cert 그룹에 추가합니다. 도대체 이게 무슨 과정이고, 왜 필요한지 직접 실험해 봤는데요, 이 절차를 생략하면 원격 접속 시 아래와 같은 경고가 발생합니다.

원격 컴퓨터 ID 확인 경고

그저 경고일 뿐이고, 를 눌러 무시하고 넘어갈 수 있지만, 귀찮죠. 그러니까 그룹을 추가하여 권한을 부여해 줍시다.

xrdp 재시작

$ sudo systemctl restart xrdp

설정 적용을 위해 xrdp를 재시작합니다. 저는 확실하게 하려고 그냥 재부팅 하는 편이에요.

설치 확인

이제 동일 네트워크에 있는 윈도우 PC의 원격 데스크톱 연결 도구를 통해 리눅스에 접속해 봅시다.

주의사항!

RDP는 VNC나 팀뷰어와 같은 원격 제어 도구와는 다르게, 원격 세션을 전달하는 방식입니다. 미묘한 차이라서 설명이 어려운데요, 사용성의 측면에서 비교하자면 이렇습니다. 원격 제어는 로컬 (모니터) 과 원격 화면이 동시에 표시될 수 있고, 양쪽에서 모두 조작이 가능한데요. 원격 세션은 어느 한쪽에서 접속할 때 다른 쪽에서는 접속할 수 없습니다.

그리고 로컬/원격으로 세션 접속할 때 반대편의 세션이 자동으로 끊기는 윈도우 RDP와 달리, Xfce의 xrdp는 나중에 접속하는 세션은 정상 접속되지 않아요! 무슨 말이냐면, 로컬 <-> 원격 전환할 때 반드시 이전 환경에서 로그아웃해야 한다는 거예요. 그렇지 않는다면 로그인을 시도해도 다시 로그인 화면으로 돌아가 버리거나, 원격 데스크톱 프로그램이 꺼집니다. 이건 확실히 불편한 점이네요.

[NOTE]
그래서 저는 리눅스 PC의 SSH 서버를 설정해 놓고, 리눅스 PC에 물리적으로 접근하지 못하는 상황에서는 SSH로 접속하여 재부팅을 시켜 버리는 방법으로 세션을 닫아요.
물론 그럼 로컬에서 작업하던 상황이 다 날아가 버리긴 하는데요. 어쩔 수 없죠 뭐…

원격 데스크톱 연결

자, 이제 윈도우에서 리눅스로 접속해 볼까요? 윈도우에서 원격 데스크톱 연결 앱을 찾거나, 또는 이 앱의 파일명인 mstscMicroSoft Terminal Services Client을 찾아 실행시켜 줍니다.

원격 데스크톱 연결

그럼 이런 창이 뜨는데요. 여기에 리눅스 PC의 IP를 입력하고 연결을 누릅니다. 그럼 아까와 같은 원격 컴퓨터의 ID를 확인할 수 없다는 경고는 나오…

원격 컴퓨터 ID 확인 경고 (인증서 오류)

…긴 하는데요. 이번에는 서버 인증서는 지원하는 것 같은데, 인증서를 신뢰할 수 없다고 나오네요. (이건 기본 설정된 인증서가 자가 서명 인증서라서 그런 거예요) 개인 레벨에서 이걸 해결하긴 쉽지 않으므로, 그대로 쓸 수밖에 없겠네요… ssl-cert에 괜히 추가했네 아무튼 를 눌러서 접속하면!

xrdp 로그인

이렇게 xrdp의 로그인 화면이 나오게 돼요. 여기에 리눅스의 계정 정보를 입력하면, 원격 데스크톱을 통해 리눅스에 접속할 수 있게 됩니다.

[NOTE]
원격 접속한 화면은 배포판에 따라 꽤 차이가 날 수 있어요. 아예 다른 화면 구성을 가지는 상황부터, 바탕화면 정도만 다른 경우까지 다양합니다.
이건 앞에서 말한 원격 세션 방식에 의한 문제인데요, 다행히도 Zorin OS Lite는 이 차이가 매우 적은 배포판이에요.
제가 xrdp 사용을 염두에 둘 때, Zorin OS Lite 설치를 강력하게 권장하는 이유이기도 합니다.

(Optional) 추가 설정

아래 내용은 상황에 따라 추가로 설정하면 좋은 것들이에요.

관리자 권한 동작 자동 인증

색상 관리 장치 인증

xrdp로 리눅스에 접속하고 나면 위와 같은 창이 뜨면서 비밀번호를 다시 요구하는 때도 있는데요. 이것은 원격 세션 구성에 관리자 권한이 필요한 동작이 있기 때문입니다. 일반적으로 색상 관리 장치는 대부분 뜨는 편이고, 저는 Wi-Fi scan 관련 인증 요청도 같이 뜨더라고요.

이것 역시 ssl-cert와 마찬가지로, 매번 비밀번호를 입력하는 것은 매우 귀찮죠. 그래서 알려진 동작은 자동으로 인증하도록 구성을 추가할 거예요.

우선 확인할 내용은 인증 요청을 하는 동작입니다. 인증 요청 창의 자세한 내용의 아래에 나오는 동작을 기록해 둡시다. 저는 색상 관리 장치Wi-Fi scan에 대해서 아래 동작이 필요하다는 것을 확인했어요.

  • 색상 관리 장치: org.freedesktop.color-manager.create-device
  • Wi-Fi scan: org.freedesktop.NetworkManager.wifi.scan

그리고 아래 경로에 sudo 명령을 통해 root 권한으로 파일을 하나 생성해 줍니다. 어떤 에디터를 사용해도 되지만 반드시 root 권한으로 접근해야 합니다. 저는 nano를 사용할게요.

$ sudo nano /etc/polkit-1/localauthority/50-local.d/xrdp.pkla

그리고 아래와 같이 내용을 작성해 줍니다. Action= 부분에 위에서 확인한 동작들을 세미콜론 (;) 으로 구분하여 넣으면 돼요.

[Allow the actions for xRDP]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.NetworkManager.wifi.scan
ResultAny=yes
ResultInactive=yes
ResultActive=yes

그러면 다음 접속부터는 인증이 자동 적용되어 인증 요청 창이 뜨지 않을 거예요.

UFW 방화벽 설정

만약 리눅스에 UFWUncomplicated FireWall를 설정해 두었다면 xrdp가 사용하는 포트를 열어 주어야 합니다. xrdp는 3389번 포트를 사용하기 때문에, 이 포트를 열어 줘야 해요.

$ sudo ufw allow 3389

보안 등의 문제로 특정 IP에서만 접근해야 한다면 아래와 같이 접속자의 IP를 제한할 수도 있어요. 아래 경우는 원격 데스크톱을 사용하여 리눅스에 접속하려고 하는 PC의 IP가 192.168.0.2인 경우의 예시입니다.

sudo ufw allow from 192.168.0.2/24 to any port 3389

일반적으로는 UFW를 활성화하지 않아 모든 포트가 개방되어 있으므로 이 작업이 굳이 필요하지 않습니다. UFW가 아닌 다른 방화벽을 쓴다면 거기에 맞는 방법으로 3389번 포트를 열어 주면 돼요.


그리고 남은 이야기

제 블로그를 보는 분은 나스나 홈서버에도 관심이 있는 분이 많겠죠. ESXiProxmox, VMM과 같은 하이퍼바이저에 리눅스를 설치하여 사용하는 경우에는 이 방법이 정말 유용합니다!

그렇지 않고 리눅스 PC에 모니터까지 할당하여 사용할 때는 (그러니까, 소위 말하는 투컴), 다음에 소개할 Barrier KVM이 더 유용할 수 있습니다. 이 소프트웨어는 한 PC에 연결된 키보드/마우스로 같은 네트워크 내의 다른 PC까지 조작할 수 있게 해 주거든요.

댓글남기기