【最新修订】如何给Linux服务器安装VNC并远程访问?(X/tigerVNC) 与疑难杂症

前言

早些时候,我在家里部署了PVE,并通过FRP穿透到了公网去,但是当我需要访问家庭路由器时,却得需要一个桌面环境,我才能很好地在浏览器控制我家中设备,而非穿透整个局域网。(Debian12)

目前,最新的tigerVNC变得奇奇怪怪的,下面文章已经过审查与修订。使得VNC可以使用。或许是我的技术问题,我实在没有在它们官方文档找到有用信息。

如果你讨厌新版本的各种问题,你可以试试旧版,网络上很多教程,或者在文章结尾处的引用。但是出于安全考虑,这里仅对新版本作介绍。一切源于我发现我自己写的博文不再可用。不过经过这次折腾,我已经对tigerVNC失去耐心,在今天修改过后,该博文在2025年3月23日永久归档!

或者..如非VNC,我建议你可以试试rdp,一般只需要5条命令,3分钟左右就可以完成。
如何给无可视化的Linux系统安装桌面环境?(RDP)

安装TigerVNC的服务端

我们更新一下源,之后再安装一下TigerVNC的服务端。请在root账户下 su root

apt update
apt install tigervnc-standalone-server tigervnc-common

一般来说,服务器并不自带桌面,如果是服务器或者没有桌面环境,可以通过下面的命令来安装桌面环境。安装会需要点时间。

# GNOME
# apt install task-gnome-desktop
# 上面的GNOME桌面测试不通过,没有太多时间测试,在修订中被删除。请使用下面的xfce4,而不是GNOME。

# XFCE
apt install xfce4 xfce4-goodies

配置VNC服务器

1.创建或编辑 VNC 的配置文件:

mkdir /root/.vnc
vim ~/.vnc/xstartup
## 记得在root下。就是/root/.vnc

XFCE桌面配置:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4

该区块只是错误示范:
#########################################################
下面GNOME随着修订被遗弃,还有一个问题,来自于【&】,因为新版tigerVNC希望先在前台运行一下,这里的【&】会报错。这个修改很抽象。

#!/bin/bash                            # 错误示范,请勿照抄
xrdb $HOME/.Xresources      # 错误示范,请勿照抄
gnome-session &                 # 错误示范,请勿照抄

#########################################################

2.给予 xstartup 文件可执行权限:

chmod +x ~/.vnc/xstartup

3.第一次启动VNC服务|设定密码:

vncserver

在第一次启动时,会向你取要密码,如下

vncserver
#(tigervncserver)

You will require a password to access your desktops.

Password:       # 输入第一次密码,6-8位
Verify:             # 验证第一次输入的密码,6-8位
Would you like to enter a view-only password (y/n)? n       # 是否创建一个只查看的用户(只能看),n就行。

如若上面不是你想要的设定,或者你想重新设置一个只能查看的用户。只需要执行:

vncpasswd

启动VNC服务

一般启动会报错,总之就是各种问题。。

你可以通过 ps -ef | grep tigervnc 查看启动的vnc进程,并kill它。
(请记住,无论如何,只要使用了grep,就总是会查找到一个进程,这个进程会一直变化,因为这个进程是grep,和你查找的内容无关)。

在你安装完桌面环境后,以及配置好密码,也就是到了这一步了,请先重启服务器

在本地服务器只有tty的情况下,你会发现重启进入了一个桌面环境。

完成重启后,请不要直接使用 vncserver 或者 tigervncserver 命令启动vnc服务器,这样启动即便成功了,你也连接不上。。。

使用下面命令启动:

vncserver :1 -localhost no
# 这里的:1指的是默认端口5901,:1代表1。:2则是5902。此处可以省略。
# 但是-localhost no不能省略,省略后无法连接

如果你只想vnc一个终端:

vncserver -xstartup /usr/bin/xterm :1 -localhost no

连接:

学会用 ps -ef | grep tigervnc。这个命令还能看到vncserver启动参数。还有,你记得安装好桌面以及设置好密码后就重启服务器吗?

1.确保vncserver在运行。

2.确保没有防火墙阻拦(或者说放行了端口)

3.使用了 -localhost no 参数

有什么问题可以通过 ps -ef | grep tigervnc 查看启动的vnc进程,看它的参数,或kill它。

ps-grep-vnc

如今,你应该就可以通过VNC连接软件进行连接了。密码源自于你设置的密码,而不是服务器root密码。


系统服务/守护进程

不再介绍系统服务设置(修订中删除)


疑难杂症

1.默认端口是5901,:1代表1。:2则是5902。此处可以省略。

2.-localhost no不能省略,省略后无法连接,这个指的可不是本地访问,而是决定其他计算机是否可以访问的。

3.当你 xstartup 文件不存在时,就得自己指定一个。如:vncserver -xstartup /usr/bin/xterm :1 -localhost no 就会vnc一个终端出去。

4.如果出现各种问题,如黑屏之类的,请查看是否在虚拟环境或者其他模式下启动。确保在真实的系统环境下启动。

5.有防火墙吗。你确定防火墙放行了吗?


本文有参考:

unix.stackexchange – 785500 疑难杂症【&】

Ubuntu 20.04 安装多用户VNC(基于gnome) 其介绍了旧版的tigerVNC如何设置使用,以及一些新版的疑难杂症。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注