13장. TigerVNC
tigerv
nc(Tiger Virtual Network Computing)는 다른 컴퓨터를 원격으로 제어할 수 있는 그래픽 데스크탑 공유를 위한 시스템입니다.
tigerv
nc는 클라이언트-서버 원칙에 따라 작동합니다. 서버는 출력(vncserver
)과 클라이언트 (vncviewer
)가 서버에 연결됩니다.
이전 Red Hat Enterprise Linux 배포판과 달리, Red Hat Enterprise Linux 7의 TigerVNC
는 systemd
시스템 관리 데몬을 해당 구성에 사용합니다. /etc/sysconfig/vncserver
구성 파일은 /etc/systemd/system/vncserver@.service
로 교체되었습니다.
13.1. VNC 서버
vncserver
는 VNC(Virtual Network Computing) 데스크탑을 시작하는 유틸리티입니다. 이는 적절한 옵션과 함께 Xvnc 를 실행하고 VNC 데스크탑에서 창 관리자를 시작합니다. vncserver
를 사용하면 사용자가 어디에서나 액세스할 수 있는 시스템에서 별도의 세션을 동시에 실행할 수 있습니다.
13.1.1. VNC 서버 설치
TigerVNC 서버를 설치하려면 root
로 다음 명령을 실행합니다.
~]# yum install tigervnc-server
13.1.2. VNC 서버 구성
디스플레이 설정, 네트워크 주소 및 포트, 보안 설정 등의 선택적 매개 변수를 사용하여 사용자 계정이 시스템에 존재하는 경우 VNC 서버는 하나 이상의 사용자에 대한 디스플레이를 시작하도록 구성할 수 있습니다.
단일 사용자에 대해 VNC 디스플레이 구성
/etc/systemd/system/vncserver@.service
라는 구성 파일이 필요합니다. 이 파일을 생성하려면/usr/lib/systemd/system/vncserver@.service
파일을root
로 복사합니다.~]#
cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
systemd
가 필요에 따라 메모리에 적절히 명명된 인스턴스를 자동으로 만들어 서비스 파일의'%i'
를 표시 번호로 대체하므로 파일 이름에 표시 번호를 포함할 필요가 없습니다. 단일 사용자의 경우 파일 이름을 변경할 필요가 없습니다. 여러 사용자의 경우, 예를 들어 특정 방식으로 사용자 이름을 파일 이름에 추가하여 각 사용자에 대해 고유하게 지정된 서비스 파일이 필요합니다. 자세한 내용은 13.1.2.1절. “두 사용자의 VNC 서버 설정” 을 참조하십시오./etc/systemd/system/vncserver@.service
를 편집하여 USER 를 실제 사용자 이름으로 교체합니다. 파일의 나머지 행은 수정되지 않은 상태로 둡니다.ExecStart=/usr/bin/vncserver_wrapper <USER> %i
참고VNC 데스크탑의 기본 크기는 1024x768입니다.
사용자의 VNC 세션은
~/.vnc/config
파일을 사용하여 추가로 구성할 수 있습니다.예를 들어 VNC 창 크기를 변경하려면 다음 행을 추가합니다.
geometry= <WIDTH> x <HEIGHT>
- 변경 사항을 저장합니다.
변경 사항을 즉시 적용하려면 다음 명령을 실행합니다.
~]#
systemctl daemon-reload
구성 파일에 정의된 사용자 또는 사용자의 암호를 설정합니다. 먼저
root
에서 USER 로 전환해야 합니다.~]# su - USER ~]$
vncpasswd
Password: Verify:중요저장된 암호는 암호화되지 않습니다. 암호 파일에 대한 액세스 권한이 있는 모든 사용자는 일반 텍스트 암호를 찾을 수 있습니다.
13.1.3절. “VNC 서버 시작” 으로 이동합니다.
13.1.2.1. 두 사용자의 VNC 서버 설정
동일한 시스템에서 두 개 이상의 사용자를 구성하려면 각 사용자에 대해 서로 다른 템플릿 유형 서비스 파일을 생성합니다.
-
두 개의 서비스 파일(예:
vncserver-USER_1@.service
및vncserver-USER_2@.service
)을 만듭니다. 두 파일 모두에서 USER 를 올바른 사용자 이름으로 대체합니다. 두 사용자의 암호를 설정합니다.
~]$ su - USER_1 ~]$
vncpasswd
Password: Verify: ~]$ su - USER_2 ~]$vncpasswd
Password: Verify:
13.1.3. VNC 서버 시작
서비스를 시작하거나 활성화하려면 명령에서 직접 표시 번호를 지정합니다. 단일 사용자에 대해 VNC 디스플레이 구성 에서 위에서 구성한 파일은 템플릿으로 작동하며, %i
는 systemd
의 표시 번호로 대체됩니다. 유효한 표시 번호를 사용하여 다음 명령을 실행합니다.
~]# systemctl start vncserver@:display_number.service
시스템을 시작할 때 서비스가 자동으로 시작되도록 활성화할 수도 있습니다. 그런 다음 로그인하면 vncserver
가 자동으로 시작됩니다. root
로서 다음과 같이 명령을 실행합니다.
~]# systemctl enable vncserver@:display_number.service
이때 다른 사용자는 VNC 뷰어 프로그램을 사용하여 정의된 디스플레이 번호 및 암호를 사용하여 VNC 서버에 연결할 수 있습니다. 그래픽 데스크탑이 설치되어 있으면 해당 데스크탑의 인스턴스가 표시됩니다. 현재 대상 시스템에 표시된 인스턴스와 같지 않습니다.
13.1.3.1. 두 명의 사용자 및 두 개의 다른 디스플레이에 대해 VNC 서버 설정
구성된 두 VNC 서버의 경우 vncserver-USER_1@.service 및 vncserver-USER_2@.service의 경우 다른 표시 번호를 활성화할 수 있습니다. 예를 들어 다음 명령은 USER_1의 VNC 서버가 디스플레이 3에서 시작되고, USER_2에 대한 VNC 서버가 디스플레이 5에서 시작되도록 합니다.
~]# systemctl start vncserver-USER_1@:3.service ~]# systemctl start vncserver-USER_2@:5.service
13.1.4. GDM용 XDMCP를 사용하여 xinetd 기반 VNC 설정
GDM(X Display Manager Control Protocol)을 사용하여 xinetd를 기반으로 하는 VNC 설정은 주로 씬 클라이언트로 구성된 클라이언트 시스템에 유용한 설정입니다. 설정 후 클라이언트는 GDM 로그인 창에 액세스하여 시스템 계정에 로그인할 수 있습니다. 설정의 전제 조건은 gdm, vnc, vnc-server 및 xinetd 패키지가 설치되어 있다는 것입니다.
~]# yum install gdm tigervnc tigervnc-server xinetd
xinetd 서비스를 활성화해야 합니다.
~]# systemctl enable xinetd.service
시스템 기본 대상 단위는 graphical.target
여야 합니다. 현재 설정된 기본 대상 유닛을 가져오려면 다음을 사용합니다.
~]# systemctl get-default
기본 대상 단위는 다음을 사용하여 변경할 수 있습니다.
~]# systemctl set-default target_name
GDM 로그인 창에 액세스 및 로그인
/etc/gdm/custom.conf
구성 파일을 편집하여 XDMCP를 사용하도록 GDM을 설정합니다.[xdmcp] Enable=true
다음 콘텐츠를 사용하여
/etc/xinetd.d/xvncserver
라는 파일을 생성합니다.service service_name { disable = no protocol = tcp socket_type = stream wait = no user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry selected_geometry -depth selected_depth securitytypes=none }
server_args 섹션에서
-query localhost
옵션은 각 Xvnc 인스턴스가 xdmcp 세션에 대해 localhost를 쿼리합니다.깊이
옵션은 생성할 VNC 데스크탑의 비트 단위(비트)를 지정합니다. 허용 가능한 값은 8, 15, 16 및 24이며 다른 값으로 인해 예기치 않은 애플리케이션 동작이 발생할 수 있습니다.서비스를 정의할
/etc/services
를 편집합니다. 이렇게 하려면/etc/services
파일에 다음 스니펫을 추가합니다.# VNC xinetd GDM base service_name 5950/tcp
구성 변경 사항을 적용하려면 시스템을 재부팅합니다.
또는 다음을 실행할 수 있습니다. init 수준을 3으로 변경하고 5로 돌아가 gdm을 강제로 다시 로드합니다.
# init 3 # init 5
gdm이 UDP 포트 177에서 수신 대기 중인지 확인합니다.
# netstat -anu|grep 177 udp 0 0 0.0.0.0:177 0.0.0.0:*
xinetd 서비스를 다시 시작합니다.
~]# systemctl restart xinetd.service
xinetd 서비스가 새 서비스를 로드했는지 확인합니다.
# netstat -anpt|grep 595 tcp 0 0 :::5950 :::* LISTEN 3119/xinetd
vncviewer 명령을 사용하여 설정을 테스트합니다.
# vncviewer localhost:5950
이 명령은 암호가 표시되지 않는 localhost에 VNC 세션을 시작합니다. GDM 로그인 화면이 표시되고 유효한 사용자 이름 및 암호를 사용하여 시스템의 모든 사용자 계정에 로그인할 수 있습니다. 그런 다음 원격 연결에서 동일한 테스트를 실행할 수 있습니다.
설정에 대한 방화벽을 구성합니다. 방화벽 구성 도구를 실행하고 시스템에 들어오는 연결을 허용하도록 TCP 포트 5950을 추가합니다.
~]# firewall-cmd --permanent --zone=public --add-port=5950/tcp ~]# firewall-cmd --reload
13.1.5. VNC 세션 종료
vncserver
서비스를 활성화하는 것과 유사하게 시스템을 시작할 때 서비스의 자동 시작을 비활성화할 수 있습니다.
~]# systemctl disable vncserver@:display_number.service
또는 시스템이 실행 중이면 root
로 다음 명령을 실행하여 서비스를 중지할 수 있습니다.
~]# systemctl stop vncserver@:display_number.service