一、linux安装(root用户操作)
- 安装vncserver;
yum install tigervnc-server - 安装vncviewer;
yum install vnc - 设置密码:
vncpasswd - 启动vncserver:
vncserver - 停止并禁用防火墙;
systemctl stop firewalld.service
systemctl disable firewalld.service - 安装linux图形桌面
yum groupinstall “GNOME Desktop” “Graphical Administration Tools”
二、配置 - 修改启动文件
vim /root/.vnc/xstartup
使用如下内容填充:
VNCSERVERS=“1:root”
VNCSERVERARGS[1]="-geometry 1200x800"
gnome-session &
表示窗口是基于geome的桌面配置 - 创建一个新的配置文件,以开启1号窗口为例(也可以同时开启多个窗口,修改数字即可),方法如下:
cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
或者再增加一个窗口:
cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:2.service
编辑/lib/systemd/system/vncserver@:1.service,设置用户root相关参数,最终内容如下:
[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=/usr/sbin/runuser -l root -c “/usr/bin/vncserver %i”
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target
#启动窗口1
#先杀死可能存在的进程
vncserver -kill :1
#启动
vncserver :1
#查看启动列表状态
vncserver -list
启动成功的结果应当如下:
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/eunke-network002:1.log
查看日志获取端口号:
cat /root/.vnc/eunke-network002:1.log
如果启动失败, 则进入文件夹,删除 X1文件后,重新启动窗口1:
cd /tmp/.X11-unix
rm -rf X1
#杀死窗口1
vncserver -kill :1
#启动窗口1
vncserver :1
四、Windows安装VNC viewer
- 64bit下载地址:https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.19.923-Windows-64bit.exe
- 安装后输入IP:端口,如下:
- 回车后,即可打开远程linux桌面(如果打开看到是黑色窗口,则重启下linux服务器即可)。
注意:vncserver的端口默认是5901,如果要改的话:
从vncserver这个启动命令开始吧,
[root@redflag1 ~]# which vncserver
/usr/bin/vncserver
修改/usr/bin/vncserver 这个文件,
[root@redflag1 ~]# file /usr/bin/vncserver
/usr/bin/vncserver: a perl script text executable
[root@redflag1 ~]# grep “59” /usr/bin/vncserver -n
18:# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
118:vncPort=5900+displayNumber;
238:# n is taken if something is listening on the VNC server port (5900+n) or the
257:# (5900+n) or the X server port (6000+n).
274: if (!bind(S, pack(‘S n x12’, AFINET,5900+n))) {
经过这几个回合,解决方法已经大白于天下了。
这里启动的脚本hard code了5900,我们可以替换这里就OK了
先定义一个defaultport=15900然后替换118和274行的5900为default_port就可以了
现在启动服务
查看端口
[root@redflag1 ~]# netstat -l | grep 159
tcp 0 0 *:15901 : LISTEN
tcp 0 0 *:15902 : LISTEN