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로 합니다.
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.