−25%

Windows 연간 결제, 10월 31일까지. 요금제 보기

EQVPS
시작하기

Linux VPS에 데스크톱을 설치하고 원격 데스크톱으로 접속하는 방법 (XFCE + xrdp)

Ubuntu 24.04 VPS에 일반 원격 데스크톱 앱으로 여는 그래픽 데스크톱을 만듭니다. XFCE와 xrdp, 이를 망가뜨리는 기본값 두 가지(잘못된 세션, TLS 없음), 그리고 포트 3389가 인터넷에 전혀 노출되지 않는 구성을 다룹니다. 디스크 사용량과 세션당 RAM도 측정했습니다.

Linux 서버에는 화면이 없고, 대부분은 필요하지도 않습니다. 하지만 필요할 때도 있습니다. 서버 자신의 주소에서 실행되어야 하는 브라우저, 그래픽 화면만 있는 도구, 또는 켜 두고 어느 컴퓨터에서든 다시 돌아올 수 있는 데스크톱이 그렇습니다. 이 가이드는 Ubuntu 24.04에 가벼운 데스크톱 XFCE와 xrdp를 추가해, Windows 서버에 쓰던 원격 데스크톱 앱으로 그대로 열 수 있게 합니다.

저희 Ubuntu 24.04 이미지에서 모든 단계를 테스트했습니다. 기본값 두 가지 때문에 첫 시도는 실패했고, 아래에서 둘 다 고칩니다. sudo 권한이 있는 일반 사용자가 필요합니다. Ubuntu 설정 가이드에서 만들 수 있습니다. 예시에서는 이름이 deploy입니다.

1. XFCE와 xrdp 설치하기

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp

2 GB 서버에서 약 4분 30초가 걸렸고 디스크를 1.7 GB 썼습니다(설치 전 2.7 GB, 설치 후 4.4 GB 사용). xrdp 0.9.24가 설치되며 바로 시작되어 포트 3389에서 대기합니다.

2. xrdp가 GNOME이 아닌 XFCE를 시작하게 하기

데스크톱을 쓸 사용자로 로그인한 뒤 다음을 실행하세요.

echo xfce4-session > ~/.xsession

이 파일이 없을 때 첫 로그인에서 XFCE 대신 GNOME이 시작되었고, 세션은 곧바로 "Oh no! Something has gone wrong"과 함께 종료되었습니다. 1단계의 패키지가 GNOME 세션 관리자도 함께 설치하고, Ubuntu는 이를 기본값으로 만듭니다. ~/.xsession이 있으면 xrdp는 XFCE를 시작합니다.

3. xrdp가 TLS를 쓰게 하기

xrdp는 자체 xrdp 사용자로 실행되는데, 이 사용자는 서버의 개인 키를 읽을 수 없습니다. 첫 연결은 되었지만 /var/log/xrdp.log를 보면 그 연결을 믿으면 안 되는 이유가 나옵니다.

Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1

키가 없으면 xrdp는 TLS 대신 예전 RDP 암호화로 돌아갑니다. 접근 권한을 주고 재시작하세요.

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

다음 연결은 로그에 TLS connection established ... TLSv1.3으로 남았습니다. 내 서버도 같은 방법으로 확인할 수 있습니다.

sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2

4. 포트 3389를 인터넷에 내놓지 않기

설치 직후 xrdp는 모든 주소에서 대기합니다. Windows와 달리 xrdp에는 Network Level Authentication이 없어서, 포트에 닿는 누구나 비밀번호를 추측해 볼 로그인 화면을 받습니다. 서버 자신에서만 대기하도록 바꾸세요.

sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389

마지막 줄에 127.0.0.1:3389가 보여야 합니다. 테스트에서는 이후 서버 주소의 3389로 직접 연결하면 거부되었고, 다음 단계의 터널은 계속 작동했습니다.

5. SSH로 접속하기

내 컴퓨터에서 터널을 엽니다. Windows에서도 PowerShell에 같은 ssh 명령이 있습니다.

ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP

NAT 요금제라면 -p와 대시보드의 개인 SSH 포트를 붙이세요. 이 창은 열어 둡니다. 그다음 원격 데스크톱 앱의 접속 대상을 **localhost:13389**로 하고, deploy와 그 사용자의 비밀번호로 로그인합니다.

  • Windows: 원격 데스크톱 연결(mstsc).
  • macOS: App Store의 Windows App.
  • Linux: Remmina 또는 xfreerdp /v:localhost:13389 /u:deploy.

로컬 포트를 3389가 아닌 13389로 쓰는 이유는, 내 컴퓨터의 3389를 이미 그 컴퓨터 자신의 원격 데스크톱이 쓰고 있을 수 있기 때문입니다. 처음에는 앱이 알 수 없는 인증서라고 경고합니다. 이는 서버의 자체 서명 인증서이며, 연결은 어차피 SSH 안에서 암호화됩니다.

6. 얻게 되는 것

패널, 파일 관리자, 터미널이 있는 XFCE 데스크톱을 쓸 수 있습니다. 저희 서버에서는 세션 하나에 RAM이 약 360 MB 늘었습니다. 접속 전 388 MB, 세션 중 747 MB를 사용했습니다.

원격 데스크톱 창을 닫아도 로그아웃되지 않습니다. 테스트에서 연결을 끊은 뒤에도 긴 명령이 계속 실행되었습니다. 다시 접속하자 xrdp는 같은 세션으로 돌려보내 주었습니다(로그에 reconnected session ... display :10). 세션을 정말 끝내려면 XFCE 메뉴에서 Log Out을 누르세요.

어떤 요금제를 고를까

데스크톱에는 CPU보다 RAM이 중요합니다. Micro(2 vCPU, 2 GB, 25 GB, 월 $5)면 XFCE와 가벼운 도구를 넉넉히 돌립니다. 세션에서 웹 브라우저를 계속 열어 둘 생각이라면 4 vCPU와 4 GB에 월 $8인 Small을 고르세요. 둘 다 NAT 요금제지만 여기서는 문제가 없습니다. 원격 데스크톱은 SSH 포트로 들어가기 때문입니다.

실제로 필요한 것이 Windows 소프트웨어라면 Windows VPS에서 바로 실행할 수 있고, Windows-Small은 월 $11부터입니다. Ubuntu 24.04는 Ubuntu VPS 페이지에 있으며 VPS의 모든 Linux 요금제에서 선택할 수 있습니다. 결제는 Base, Ethereum, Polygon 네트워크의 USDT, USDC, ETH로 합니다.

자주 묻는 질문

Windows의 일반 원격 데스크톱 앱으로 접속할 수 있나요?

네. xrdp는 RDP 프로토콜을 쓰므로 Windows에 기본으로 있는 원격 데스크톱 연결, macOS의 Windows App, Linux의 Remmina나 xfreerdp 모두 됩니다. 서버 주소가 아니라 SSH 터널을 거쳐 localhost에 접속합니다.

NAT 요금제에서도 되나요?

됩니다. RDP 연결은 SSH 안으로 지나가고, SSH가 바로 NAT 요금제가 서버로 전달하는 유일한 포트입니다. 포트 3389를 인터넷에 닫아 둘 수 있어서 이 가이드는 어떤 요금제에서든 이 구성을 권합니다.

데스크톱은 RAM을 얼마나 쓰나요?

테스트 서버에서 XFCE 세션 하나가 약 360 MB를 더 썼고, 사용 메모리는 388 MB에서 747 MB가 되었습니다. 2 GB Micro 요금제면 데스크톱과 가벼운 도구에 충분합니다. 세션에서 웹 브라우저를 쓴다면 4 GB가 더 편합니다.

검은 화면이나 "Oh no! Something has gone wrong"이 나옵니다. 왜 그런가요?

xrdp가 XFCE 대신 GNOME을 시작했습니다. 1단계의 패키지가 GNOME 세션 관리자도 함께 설치하고, Ubuntu는 이를 시스템 기본값으로 만듭니다. 로그인하는 사용자에게 xfce4-session이라고 적은 ~/.xsession을 만들고 다시 접속하세요.

RDP로 root 로그인이 되나요?

xrdp는 기본적으로 허용합니다(/etc/xrdp/sesman.ini의 AllowRootLogin=true). 하지만 sudo 권한이 있는 일반 사용자를 쓰세요. root를 막으려면 AllowRootLogin=false로 바꾸고 xrdp를 재시작하세요.

댓글

아직 댓글이 없습니다. 첫 번째가 되세요.

댓글 남기기

댓글은 표시되기 전에 검토됩니다.