본문 바로가기

Software

x11vnc 원격 접속 서버 설치 및 사용법 정리

1 소개

x11vnc 는 원격에서 리눅스 환경으로 접속할 수 있게 해주는 VNC 서버 프로그램이다. Ubuntu 16.04 LTS 환경에서 쉽게 설치 및 사용할 수 있어서 vnc 서버 프로그램으로 주로 사용된다. 본 포스트에서는 설치 방법 및 다양한 옵션들에 대해 설명한다.

2 설치

x11vnc 는 터미널을 연 상태에서 아래의 명령어를 통해 쉽게 설치할 수 있다.

sudo apt-get install x11vnc

3 daemon 서비스 등록

x11vnc 를 daemon 서비스로 등록하면 PC가 재부팅될 때도 프로그램이 자동으로 백그라운드에서 실행된다. 따라서 매번 부팅 때마다 서버 프로그램을 시작하지 않아도 된다. /lib/systemd/system 폴더에 x11vnc.service 파일을 아래와 같이 작성한다.

sudo vim /lib/systemd/system/x11vnc.service

# write codes below.
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -norc -forever -shared -display :0 -auth guess -rfbauth /etc/x11vnc.pass  -o /var/log/x11vnc.log -rfbport 5902 
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

위 파일을 저장한 후 daemon reload를 통해 서비스 목록에 추가한다.

$ sudo systemctl daemon-reload

서비스를 시작한다. 또한 부팅시 마다 자동으로 실행하기 위해 enable 명령어를 사용한다.

$ sudo systemctl start x11vnc.service
$ sudo systemctl enable x11vnc.service

4 비밀번호 설정하기

x11vnc 는 기본적으로 비밀번호없이 접속할 수 있다. 보안을 위해 접속할 때 비밀번호를 설정하고 싶으면 아래 명령어를 통해 설정한다.

sudo x11vnc -storepasswd

# Out[]:
Enter VNC passwd: [enter new password]
Verify password: [enter the new password again]
Write password to /home/ubuntu/.vnc/passwd? [y]/n y
Password written to : /home/ubuntu/.vnc/passwd

위 명령어가 끝나면 .vnc/passwd 파일이 생성된다. 저장된 파일을 /etc/x11vnc.pass 파일로 복사한다.

$ sudo cp ~/.vnc/passwd /etc/x11vnc.pass

비밀번호를 적용하기 위해 x11vnc 서버를 재시작한다.

$ sudo service x11vnc restart

5 옵션

[Service]
ExecStart=/usr/bin/x11vnc -xkb -norc -forever -shared -display :0 -auth guess -rfbauth /etc/x11vnc.pass  -o /var/log/x11vnc.log -rfbport 5902 -allow 123.23 # 123.23.x.x 의 IP 대역만 접속할 수 있다.
  • forever: 한 번 접속을 끊은 상태에서도 계속 서버를 유지
  • shared: 다중 클라이언트들의 접속을 허용 (없으면 1명만 접속 가능)
  • rfbport: 특정 포트 번호를 vnc 포트로 사용 (해당 글에서는 5902 포트를 사용)
  • rfbauth: 비밀번호를 통한 vnc 접속을 위한 비밀번호 파일 경로 설정 (-storepasswd 명령을 통해 생성된 파일을 연결하면 된다)
  • o: vnc 접속 기록을 저장하는 파일의 경로
  • allow: whitelist를 설정하여 허용한 IP들만 접속 가능하도록 설정한다.