Ubuntu 24.04 TigerVNC “Unit vncserver@1.service not found” 해결 — systemctl –user 사용자 서비스 확인

Ubuntu 24.04 작업 서버에서 시간대를 바꾼 뒤 VNC를 재시작하려고 root로 systemctl restart vncserver@1을 실행했더니 “Unit vncserver@1.service not found”가 나왔습니다. VNC는 멀쩡히 접속되고 있는데 서비스가 없다고 나와서 확인해 보니, VNC가 시스템 서비스가 아니라 일반 계정의 사용자 서비스로 등록되어 있었습니다.

TigerVNC 시스템 서비스와 사용자 서비스 위치 비교 그림
설명용 그림: 사용자 서비스로 등록된 VNC는 root의 systemctl에서 보이지 않음

결론

  • TigerVNC가 systemctl --user(사용자 서비스)로 등록되어 있으면 root의 systemctl에서는 보이지 않습니다.
  • vncserver -list도 명령을 실행한 계정의 세션만 보여줍니다. root에서는 빈 목록이 나옵니다.
  • VNC를 띄운 계정으로 로그인해 systemctl --user restart vncserver@1로 재시작합니다.
  • 사용자 서비스는 그 계정이 로그인해야 시작되므로, 재부팅 후 자동으로 띄우려면 loginctl enable-linger가 필요합니다.

환경

항목내용
OSUbuntu 24.04.4 LTS
VNCTigerVNC (Xtigervnc), 디스플레이 :1, 포트 5901
등록 방식일반 계정의 systemd 사용자 서비스 vncserver@1.service
용도외장 저장장치(ICY DOCK)의 데이터를 파일서버로 옮기는 작업 서버
작업 시점2026년 10월

호스트명과 계정 이름은 글에서 ubuntu-vnc, user로 바꿨습니다.

증상. root에서 서비스를 찾지 못함

ubuntu-vnc – Xshell–□✕
ssh://root@ubuntu-vnc:22
1 ubuntu-vnc
root@ubuntu-vnc:~#
systemctl restart rsyslog vncserver@1
Failed to restart vncserver@1.service: Unit vncserver@1.service not found.
ssh://root@ubuntu-vnc:22SSH2xtermUTF-8
  • 시간대 변경을 반영하려고 rsyslog와 VNC를 함께 재시작하려 했습니다.
  • vncserver@2로 바꿔 봐도 같은 메시지가 나왔습니다.

서비스 목록과 유닛 파일 위치, VNC 세션 목록을 차례로 확인했습니다.

ubuntu-vnc – Xshell–□✕
ssh://root@ubuntu-vnc:22
1 ubuntu-vnc
root@ubuntu-vnc:~#
systemctl list-units --all | grep -i vnc
ssh://root@ubuntu-vnc:22SSH2xtermUTF-8
  • 시스템 서비스 전체에서 vnc가 들어간 이름을 찾습니다. 아무것도 나오지 않았습니다.
ubuntu-vnc – Xshell–□✕
ssh://root@ubuntu-vnc:22
1 ubuntu-vnc
root@ubuntu-vnc:~#
ls /etc/systemd/system/ | grep -i vnc
ssh://root@ubuntu-vnc:22SSH2xtermUTF-8
  • 관리자가 등록한 시스템 서비스 유닛 파일 위치입니다. 여기에도 VNC 파일이 없었습니다.
ubuntu-vnc – Xshell–□✕
ssh://root@ubuntu-vnc:22
1 ubuntu-vnc
root@ubuntu-vnc:~#
vncserver -list
TigerVNC server sessions:

X DISPLAY #	RFB PORT #	RFB UNIX PATH	PROCESS ID #	SERVER
ssh://root@ubuntu-vnc:22SSH2xtermUTF-8
  • 실행 중인 TigerVNC 세션 목록입니다. root에서는 빈 목록이 나왔습니다.
[직접 확인] 이 시점에도 VNC 접속은 되고 있었습니다. 서비스가 없는 게 아니라 root에서 안 보이는 상태였습니다.

원인. 일반 계정의 사용자 서비스로 등록됨

VNC를 쓰는 일반 계정으로 들어가 같은 확인을 했더니 바로 보였습니다.

ubuntu-vnc – Xshell–□✕
ssh://user@ubuntu-vnc:22
1 ubuntu-vnc
user@ubuntu-vnc:~$
vncserver -list
TigerVNC server sessions:

X DISPLAY #	RFB PORT #	RFB UNIX PATH	PROCESS ID #	SERVER
1         	5901      	             	1516        	Xtigervnc
ssh://user@ubuntu-vnc:22SSH2xtermUTF-8
  • 디스플레이 :1, 포트 5901로 Xtigervnc가 실행 중입니다.
ubuntu-vnc – Xshell–□✕
ssh://user@ubuntu-vnc:22
1 ubuntu-vnc
user@ubuntu-vnc:~$
systemctl --user list-units --all | grep -i vnc
  vncserver@1.service    loaded    active   running   TigerVNC server :1
  app-vncserver.slice    loaded    active   active    Slice /app/vncserver
ssh://user@ubuntu-vnc:22SSH2xtermUTF-8
  • --user를 붙이면 이 계정의 사용자 서비스를 봅니다.
  • vncserver@1.service가 active running이면 VNC가 사용자 서비스로 돌고 있는 것입니다.
ubuntu-vnc – Xshell–□✕
ssh://user@ubuntu-vnc:22
1 ubuntu-vnc
user@ubuntu-vnc:~$
ss -tlnp | grep 590
LISTEN 0      5            0.0.0.0:5901      0.0.0.0:*    users:(("Xtigervnc",pid=1516,fd=9))
LISTEN 0      5               [::]:5901         [::]:*    users:(("Xtigervnc",pid=1516,fd=10))
ssh://user@ubuntu-vnc:22SSH2xtermUTF-8
  • 5901 포트를 어떤 프로세스가 열고 있는지 확인합니다.
  • 0.0.0.0:5901과 [::]:5901은 모든 네트워크에서 접속을 받는 상태라는 뜻입니다(아래 주의사항 참고).
[직접 확인] 일반 계정에서는 세션과 사용자 서비스가 모두 보였고, root에서는 아무것도 보이지 않았습니다. 같은 서버라도 어느 계정의 systemd로 보느냐에 따라 결과가 달랐습니다.
구분시스템 서비스사용자 서비스
명령sudo systemctl …systemctl --user … (해당 계정으로)
유닛 위치/etc/systemd/system/~/.config/systemd/user/ 등
시작 시점부팅 시그 계정이 로그인할 때 (linger를 켜면 부팅 시)
root에서 보이나보임안 보임

해결 방법

VNC를 띄운 계정으로 재시작

ubuntu-vnc – Xshell–□✕
ssh://user@ubuntu-vnc:22
1 ubuntu-vnc
user@ubuntu-vnc:~$
systemctl --user restart vncserver@1
ssh://user@ubuntu-vnc:22SSH2xtermUTF-8
  • root가 아니라 VNC를 등록한 계정으로 로그인해서 실행합니다. sudo를 붙이면 다시 root 범위가 되니 붙이지 않습니다.
  • 재시작하면 열려 있던 VNC 화면이 끊기니, 작업 중인 창은 저장해 둡니다.
ubuntu-vnc – Xshell–□✕
ssh://user@ubuntu-vnc:22
1 ubuntu-vnc
user@ubuntu-vnc:~$
systemctl --user status vncserver@1
ssh://user@ubuntu-vnc:22SSH2xtermUTF-8
  • Active: active (running)이 보이면 정상으로 다시 올라온 것입니다.

root에서 그 계정의 서비스를 바로 다루고 싶다면 계정을 지정해 실행할 수도 있습니다.

ubuntu-vnc – Xshell–□✕
ssh://root@ubuntu-vnc:22
1 ubuntu-vnc
root@ubuntu-vnc:~#
systemctl --user -M user@ restart vncserver@1
ssh://root@ubuntu-vnc:22SSH2xtermUTF-8
  • -M 계정@는 지정한 계정의 사용자 systemd에 붙어서 명령을 실행합니다.
[참고 · 직접 확인하지 않음] -M user@ 방식은 systemd 문서 기준으로 정리했고, 이 서버에서는 실행해 보지 않았습니다.

주의사항

재부팅 후 자동 실행: linger

ubuntu-vnc – Xshell–□✕
ssh://user@ubuntu-vnc:22
1 ubuntu-vnc
user@ubuntu-vnc:~$
loginctl show-user user --property=Linger
ssh://user@ubuntu-vnc:22SSH2xtermUTF-8
  • Linger=no면 그 계정이 로그인하기 전까지 사용자 서비스가 시작되지 않습니다. 재부팅 후 아무도 로그인하지 않으면 VNC도 안 뜹니다.
  • 부팅만 해도 VNC가 떠야 하면 sudo loginctl enable-linger user로 켜고, systemctl --user enable vncserver@1로 자동 시작을 등록합니다.

5901이 모든 네트워크에 열려 있음

  • VNC는 화면이 암호화되지 않는 경우가 많고 비밀번호도 짧게 제한됩니다. 내부망이라도 0.0.0.0:5901로 열어 두기보다는 접속 PC만 허용하는 것이 안전합니다.
  • 방법 1: sudo ufw allow from 접속PC_IP to any port 5901처럼 방화벽으로 허용 대상을 제한
  • 방법 2: VNC를 localhost에서만 받게 하고 SSH 터널(ssh -L 5901:localhost:5901 …)로 접속
[참고 · 직접 확인하지 않음] linger 설정과 방화벽 제한은 이 서버에서 적용하지 않았고, Ubuntu·TigerVNC 문서 기준으로 정리했습니다.

정리

  1. Unit vncserver@1.service not found가 나와도 VNC가 접속된다면 사용자 서비스로 등록됐을 가능성이 크다.
  2. VNC를 띄운 계정으로 vncserver -list, systemctl --user list-units | grep vnc로 확인한다.
  3. 재시작은 그 계정에서 systemctl --user restart vncserver@1로 한다.
  4. 부팅 시 자동 실행은 linger, 보안은 방화벽 제한이나 SSH 터널로 챙긴다.

관련 글: Ubuntu TigerVNC에서 Firefox 실행 안 됨 — snap cgroup 오류, 사용자 서비스 전환과 deb 교체로 해결 (VNC를 사용자 서비스로 바꾸게 된 이유)

다른 방식(x11vnc, GNOME 원격 데스크톱)에서 비슷한 문제가 있었다면 댓글로 남겨 주세요.

댓글 남기기