frp + vnc实现内网服务器图形化界面

第一步:下载并配置内网服务器上的vnc服务

在ubuntu上选择tightvncserver

1
2
sudo apt update  
sudo apt install -y tightvncserver xfce4 xfce4-goodies  

启动并设置vnc密码:

1
vncserver  

修改 VNC 启动配置文件:

1
vim ~/.vnc/xstartup  

内容替换为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/sh  
   
export XKL_XMODMAP_DISABLE=1  
unset SESSION_MANAGER  
unset DBUS_SESSION_BUS_ADDRESS  
   
xfce4-panel &  
xfsettingsd &  
xfwm4 &  
xfdesktop &  
pcmanfm &  
xfce4-terminal &  

赋予可执行权限:

1
chmod +x ~/.vnc/xstartup  

启动vnc服务:

1
vncserver -geometry 1920x1080  

第二步:frp内网穿透

查询vnc使用的端口是否被监听,一般是5901开始,随着vnc服务的开启顺序增加(如vncserver :7就是5907)

1
netstat -tuln | grep 5901  

与frp实现ssh内网穿透类似,需要编写两个toml文件

frps:

1
2
[common]   
bind_port = 7001 # 避免和使用7000的ssh端口重复  

frpc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[common]  
server_addr = xxx.xxx.xxx.xxx  # 公网服务器 IP  
server_port = 7001           # 与服务端的监听端口一致  
  
# VNC 映射  
[[proxies]]  
type = tcp  
local_ip = 127.0.0.1  
local_port = 5901  # 内网服务器的 VNC 服务端口  
remote_port = 6001  # 公网服务器上暴露的端口  

后面设置服务启动服务与ssh是一样的。

第三步 云服务器开放对应的端口

比如这里就要开放6001和7001端口

第四步 本地机器下载VNC工具并连接远程桌面

比如常用的是RealVNC Viewer,在上方输入框输入公网服务器ip:remote_port即可连接
Pasted image 20250114010330.png

附录:常用命令

vnc服务常用命令

修改密码

1
vncpasswd  

查询已开启的vnc服务

1
vncserver -list  

查询vnc已用端口

1
ps -ef | grep vnc  

关闭某个vnc服务(X)

1
vncserver -kill :X  

启动指定端口的vnc服务

1
vncserver :7  

其他常用命令

查询端口占用的PID

1
sudo lsof -i :7001  

坑与参考

黑屏问题

vncviewer黑屏问题解决_vnc viewer黑屏-CSDN博客

comments powered by Disqus
发表了21篇文章 · 总计4万5千字
使用 Hugo 构建
主题 StackJimmy 设计