vncserver-novnc转发界面
之前在组里面服务器上跑一些需要带界面信号的程序,老是有一些小细节要调试一下,今天系统的记录一下,方便后续查询。
背景是只对外暴露ssh22的端口,其他端口不可用,看一下大体过程,
- 可以是产生信号,通过ssh端口转发到app,app直接显示,如MobaXterm的Xserver功能
- 可以是带界面系统通过vncserver,再经过ssh端口转发vnc的590x信号,由界面程序展示,如PRemoteM功能
- 可以是带界面系统通过vncserver,再经过ssh端口转发vnc的590x信号到另一个linux上面,另一个linux通过novnc提供server,最后客户端使用浏览器展示。
如果main server还有其他端口可用,可以直接在main server跑novnc,方便很多,过程相似不在此展开。
vncserver
安装
1 | apt install tightvncserver |
使用
使用vncserver
或vncserver :1
可以开启界面和vnc服务,端口会从5901依次往上加,
- 注意:
- 第一次启动会让输入密码,还会问是否设置view-only只可观察的密码,如果选择是,不要和前面那个密码设置一样,可能有奇奇怪怪问题
- 如果配置
/root/.vnc/xstartup
或~/.vnc/xstartup
,里面要配置正确,如必须要启动一个界面,如xxx或xxxsession,没有的话要安装,否则不能完整启动,后续操作可能无法正常显示, - 比如:建了
~/.vnc/xstartup
,但是文件为空,则不能正确启动;比如配置文件里面没有启动界面的命令,也是无法启动的。 - 如果默认使用
/root/.vnc/xstartup
,可以把~/.vnc/xstartup
删掉。 - 如果打开为全灰,可以等一会看看能不能连上,如果一直连不上可以看看配置文件有没有错误,比如是否启动界面进程。
其他
- 停止使用
vncserver -kill :1
- 修改密码
vncpasswd
ssh proxy
这个桥建立在转发的server上,即上面蓝色的服务器
记得提前保存登录密钥
1 | ssh -L vnc云端端口:127.0.0.1:vnc映射到本地端口 -N -f -l 云端用户名 云端ip -p 云端ssh端口 |
查看建立情况
1 | ps aux | grep ssh |
novnc
1 | nohup ./novnc_proxy --vnc localhost:5902 & |
- 注意需要提前配置python环境
- 如果暴露在公网,使用
--listen 127.0.0.1:6080
的话可能会有些问题,可以--listen :6080
或者--listen 公网ip:6080
或--listen 0.0.0.0:6080
试试
误启动到后台,可以使用ps aux | grep novnc
查看pid
direct-browser
如果不配置nginx代理的话
- 打开 http://公网ip:6080/vnc.html
- 加密:如果没有配置加密证书的话,加密不要勾选加密
- 主机:公网ip
- 端口:6080
- 路径:不变
nginx-browser
如果配置反向代理到443或者80的话,需要把6080代理到80端口
- 注意,
/websockify
要单独代理
1 | #PROXY-START/ |
- 打开 http://公网ip:80/vnc.html (或复制vnc.html为index.html 后可以访问http://公网ip)
- 加密:如果没有配置加密证书的话,加密不要勾选加密
- 主机:公网ip
- 端口:80
- 路径:不变
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Zander's blog!
评论