블로그 이미지
훅크선장

카테고리

분류 전체보기 (360)
사진이야기 (23)
펭귄컴퓨팅 (120)
컴퓨터보안 (83)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

공지사항

태그목록

최근에 올라온 글

RHEL7 VNC Server 설정법을 설명합니다.
VNC user로 root, foobar 계정으로 세팅하는 법을 예로 들겠습니다.
과정 중에 프롬프트 표시가 "#", "$"의 차이가 있음에 유의하여 진행합니다.


1, 패키지 설치 & 시스템 방화벽 설정

# yum -y install tigervnc-server tigervnc

# firewall-cmd --permanent --zone=public --add-port 5901/tcp
# firewall-cmd --permanent --zone=public --add-port 5902/tcp
※ firewalld가 disabled 된 경우 skip

서버<->클라이언트 간 TCP 5901(root용), 5902(foobar용) 포트가 오픈되어야 합니다.
root 이외의 계정 n개를 vnc server 설정한다면 TCP 5901~(5901+n) 범위의 포트를 시스템 또는 네트워크 방화벽 open하여야 합니다.


2. VNC 액세스를 할 시스템 계정을 위한 VNC user 계정 생성 및 패스워드 설정

# useradd foobar
# passwd foobar


3. vncpassword 설정

3.1. root의 vncpassword 설정

# vncpasswd <-- root의 패스워드와는 달라도 상관 없습니다.

3.2. foobar 시스템 계정의 vncpassword 설정

# su - foobar
$ vncpasswd <-- 시스템 계정(foobar)의 패스워드와는 달라도 상관 없습니다.


4. foobar의 xtartup 파일 설정 및 퍼미션 변경
$ vim .vnc/xstartup
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc

$ chmod 755 .vnc/xstartup


5.  VNC user를 위해 original VNC config 파일을 copy & edit
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service <-- root용
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service <-- foobar용


# vim /etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i  > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i  > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

# vim /etc/systemd/system/vncserver@:2.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l foobar -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/home/foobar/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target



6. 설정을 reload
# systemctl daemon-reload


7. vnc service를 enable & start
# systemctl enable vncserver@:1.service
# systemctl enable vncserver@:2.service
# systemctl start vncserver@:1.service
# systemctl start vncserver@:2.service


방화벽 포트 오픈 반드시 필요
[root@localhost firewalld]# firewall-cmd --permanent --zone=public --add-port 5902/tcp
success
[root@localhost firewalld]# firewall-cmd --permanent --zone=public --add-port 5901/tcp
success
[root@localhost zones]# systemctl restart firewalld


8. vnc service에 의한 포트 listen 여부 확인(tcp 5901, 5902, 6001, 6002)
[root@localhost ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      2736/Xvnc
tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN      2924/Xvnc
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      2736/Xvnc
tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN      2924/Xvnc
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      792/sshd
tcp6       0      0 :::6001                 :::*                    LISTEN      2736/Xvnc
tcp6       0      0 :::6002                 :::*                    LISTEN      2924/Xvnc
tcp6       0      0 :::22                   :::*                    LISTEN      792/sshd
[root@localhost ~]#


8. vnc 클라이언트로 접속

root -> IP ADDRESS:5901
foobar  -> IP ADDRESS:5902

Posted by 훅크선장
, |