우분투 원격 데스크톱(xrdp) 설정: 접속 불능을 피하려고 확인할 것들
이 글의 핵심
우분투에 xrdp로 원격 데스크톱을 열 때는 설치보다 설정을 바꾼 뒤 로그인이 막히는 상황이 위험합니다. xrdp 패키지가 만드는 파일과 기본값을 우분투 24.04 컨테이너에서 확인하고, 접속이 끊겨도 복구할 수 있는 순서를 정리했습니다. 컨테이너에는 데스크톱과 systemd가 없어 실제 로그인 동작은 검증하지 못했습니다.
원격 데스크톱 설정에서 정말 곤란한 상황은 설치가 안 되는 것이 아니라, 설정을 바꾼 뒤 원격 접속도 로컬 로그인도 안 되어 기계에 손댈 수 없게 되는 것이다. 이 글은 그 위험을 줄이려는 순서를 정리한다. 우분투 24.04 컨테이너(aarch64)에 apt install xrdp를 해서 확인한 내용과, 컨테이너라서 확인하지 못한 내용을 구분해서 적는다.
컨테이너에서 확인한 것
xrdp를 설치하면 /etc/xrdp/ 아래에 다음 파일이 생겼다.
xrdp.ini: 접속 포트, 보안 계층, 세션 종류 메뉴sesman.ini: 세션 관리자 설정startwm.sh: 로그인 뒤 실행되는 시작 스크립트reconnectwm.sh,rsakeys.ini,xrdp_keyboard.ini
xrdp.ini의 주요 값은 [Globals]에서 port=3389, security_layer=negotiate, crypt_level=high였다. 세션 종류를 정하는 항목으로 [Xorg]와 [Xvnc]가 있었고, 이 항목에서 port=-1로 보이는 것은 자동 할당을 뜻하는 설정이다. 마지막에 port=ask5900, port=ask3389로 시작하는 접속 대상 항목도 있었다.
startwm.sh의 주석을 뺀 내용은 짧다. /etc/profile과 ~/.profile을 읽은 뒤 /etc/X11/Xsession을 exec로 실행한다. 이 스크립트가 틀리면 로그인 직후 세션이 바로 끝나는 증상이 나올 수 있으므로, 수정할 때 가장 조심할 파일이다. 다만 그런 증상은 이 컨테이너에서 재현해 보지 않았다.
패키지 정보로는 ssl-cert에 의존하고(그룹 ssl-cert가 생성됨), xorgxrdp와 pipewire-module-xrdp를 권장 패키지로 두며 guacamole을 제안한다. 권장 패키지를 빼고 설치하면 화면이나 소리가 빠질 수 있다는 점만 의식해 두면 된다. 실제로 빠지는지는 확인하지 못했다.
설정을 바꾸기 전에 할 것
- SSH 접속을 먼저 확보한다. 원격 데스크톱이 안 열려도 SSH가 되면 복구할 수 있다. 다른 터미널 하나로 SSH 세션을 열어 두고 작업한다.
- 백업한다.
sudo cp -a /etc/xrdp /etc/xrdp.bak처럼 설정 디렉터리 전체를 복사해 둔다. 홈 디렉터리의~/.xsession,~/.xsessionrc도 있으면 같이 복사한다. - 한 번에 하나만 바꾼다. 설정을 두세 개 같이 바꾸면 어느 것이 원인인지 알 수 없다.
- 바꾼 뒤에는 현재 세션을 닫기 전에 새 세션으로 접속해 본다. 기존 연결을 끊지 않은 채로 다른 클라이언트로 접속이 되는지 확인한 뒤에 기존 연결을 닫는다.
- 서비스 재시작은 SSH에서 한다.
sudo systemctl restart xrdp로 재시작하고systemctl status xrdp와journalctl -u xrdp로 로그를 확인한다. 이 명령은 컨테이너에 systemd가 없어 실행해 보지 못했다.
포트를 그대로 열지 않는다
기본 포트가 3389이므로 공유기나 방화벽에서 이 포트를 인터넷에 그대로 여는 것은 위험하다. 외부에서 접속해야 한다면 SSH 터널(ssh -L 3389:localhost:3389 사용자@서버)로 연결하고 클라이언트는 localhost:3389로 접속하는 방법이 있다. 이 방식은 명령 형태만 소개하며 이 글에서 연결까지 확인하지는 않았다.
접속이 안 될 때 확인 순서
원인을 좁히는 순서를 적는다. 각 단계의 결과는 환경에 따라 다르다.
- 서비스 상태:
systemctl status xrdp xrdp-sesman - 포트 대기 여부:
ss -tlnp | grep 3389 - 방화벽:
sudo ufw status - 로그:
journalctl -u xrdp -u xrdp-sesman,/var/log/xrdp-sesman.log - 같은 계정으로 로컬 데스크톱에 이미 로그인된 상태인지. 같은 계정의 로컬 세션과 원격 세션이 겹치면 문제가 생길 수 있는지는 이 글에서 확인하지 못했다.
확인하지 못한 것
- 데스크톱 환경(GNOME)과 Wayland 세션에서의 로그인
startwm.sh를 잘못 고쳤을 때의 정확한 증상과 복구 방법- 오디오 리다이렉션과 클립보드 동작
- 실제 클라이언트(Windows 원격 데스크톱 연결, macOS용 Microsoft Remote Desktop)에서의 접속
우분투 초기 설정 전반은 우분투 개발 환경 초기 설정에서 다룬다.