VNC 介绍
VNC是一种远程桌面软件,允许图形软件应用程序的显示被发送给另外一个显示屏,而用户键盘和鼠标操作则发送到另外一个计算机,就像用户坐在另一台机器前面操作一样。这使得用户可以在某个位置访问并控制另一台计算机,可能位于一个完全不同的地理位置。
VNC的核心部分是由一个服务器和一个客户端(或多个客户端)组成。服务器安装并运行在您希望访问的计算机上,而客户端软件则在您实际使用的计算机上运行。
在Linux中,VNC的应用场景举例如下:
- 远程访问桌面:例如,您可以在家中访问办公室的机器,反之亦然。
- 提供技术支持:帮助其他用户解决其机器上的问题,而不需要实际到现场。
- 教育和演示:在多个计算机上显示相同的内容。
常见的Linux VNC服务器有TightVNC
, RealVNC
, TigerVNC
等。
1. Centos/RHEL7 安装 VNC
会分别为root用户,以及普通用户安装VNC桌面。
1.1 创建Linux普通用户
# 创建名为oracle的用户
sudo useradd oracle
# 为新用户设置密码
sudo passwd oracle
1.2 安装 VNC 所需的 Package
# 安装 GUI 桌面软件包以通过 GUI 访问 VNC 服务器
yum groupinstall "Server with GUI"
# 在VNC服务器上,安装TigerVNC服务器包
yum install tigervnc-server
1.3 设置 VNC 服务
将配置文件 /lib/systemd/system/[email protected] 复制到目录 /etc/systemd/system/,命名为“vncserver_[username]@:[port].service”。 例如:
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver_root@:2.service
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver_oracle@:3.service
修改 vncserver_root@:2.service & vncserver_oracle@:3.service 配置文件,确保其内容如下(可以将原本[Unit]、[Service]、[Install]下的内容替换):
vncserver_root@:2.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=root
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i -geometry 800x800"
PIDFile=/home/root/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
vncserver_oracle@:3.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=oracle
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/sbin/runuser -l oracle -c "/usr/bin/vncserver %i -geometry 800x800"
PIDFile=/home/oracle/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
当使用 systemctl start 启动服务器时,会调用 ExecStart 条目中指定的命令; 它使用 runuser 在用户帐户下运行 TigerVNC。 -l 参数提供用户名,-c 指定 runuser 将执行的命令及其参数。 PIDFile 条目指定正在运行的进程将在其中跟踪其进程 ID 的目录。
注意:从 RHEL7.4 开始,支持在调用时传递给 vncserver 的服务器选项已移至 ~/.vnc/
目录中名为“config”的新文件中。 因此无需在 ExecStart 行中添加这些选项。
1.4 设置防火墙
防火墙应允许显示器相应端口的流量。 显示器 0 使用端口 5900,显示器 1 使用端口 5901,显示器 2 使用端口 5902,依此类推。 如果您使用 FirewallD,预定义的 vnc-server 服务将打开端口 5900-5903:
firewall-cmd --zone=public --permanent --add-service=vnc-server
firewall-cmd --reload
systemctl daemon-reload
1.5 开启 VNC 服务并设置登录密码
为所选端口上的每个用户启用 vncserver 服务,这还将启用系统启动时的自动启动,使用以下命令:
systemctl enable vncserver_root@:2.service
systemctl enable vncserver_oracle@:3.service
# 重新加载 systemd 的配置以使其识别新的单元文件
systemctl daemon-reload
# 为每个使用 vncserver 的用户配置密码
$ vncpasswd root
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
$ vncpasswd oracle
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
# 您需要以用户身份登录时在命令行中执行“vncserver”。 这将自动要求您为用户创建一个新密码。(分别在root,oracle用户下执行)
$ vncserver -geometry 1920x1080
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth: file /root/.Xauthority does not exist
New 'geeklab:1 (root)' desktop is geeklab:1
Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/geeklab:1.log
注意:可以通过 $vncserver -help 查看命令帮助 usage: vncserver [:] [-name
] [-depth ]
[-geometry x]
[-pixelformat rgbNNN|bgrNNN]
[-fp ]
[-cc ]
[-fg]
[-autokill]
[-noxstartup]
[-xstartup ]
[-fallbacktofreeport]
…vncserver -kill <X-display> vncserver -list
1.6 VNC 运行检验
# vncserver -list 命令
vncserver -list
TigerVNC server sessions:
X DISPLAY # PROCESS ID
:1 25853
# netstat 命令
netstat -antp | grep Xvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 25853/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 25853/Xvnc
tcp 0 0 9.30.215.215:5901 9.197.228.91:57827 ESTABLISHED 25853/Xvnc
tcp6 0 0 :::5901 :::* LISTEN 25853/Xvnc
tcp6 0 0 :::6001 :::* LISTEN 25853/Xvnc
1.7 VNC 远程登录
您可以在客户端计算机上安装任何 VNC 查看器软件来访问 VNC 服务器。 我在 MAC 上使用 realVNC 软件来访问 VNC 服务器。 您可以根据您使用的操作系统使用以下任意 VNC 查看器软件。
1.TigerVNC:http://tigervnc.org
2.TightVNC:https://www.tightvnc.com/download.php
3.RealVNC:https://www.realvnc.com/en/connect/download/viewer
我使用的是 RealVNC: