目录标题
1. 场景描述
课题组有一台工作站,安装了ubuntu 18.04桌面版系统,桌面系统为ubuntu安装默认的gnome。
课题组内成员甲乙丙能通过自己的电脑访问该工作站,系统为windows或ubuntu不限制。
2. 环境搭建概要
2.1 工作站
- 工作站:作为服务器端,安装x11vnc;设置密码;启动vnc服务器。
参见:《Linux基础——怎么样用 TeamViewer 和 VNC 从远程控制电脑》
https://blog.csdn.net/weixin_37763870/article/details/104689171
1) 设置这个服务器端的 VNC ,打开你的 Linux 电脑, 打开 Terminal. 输入:
sudo apt-get install x11vnc
确认服务器的 Linux 用户密码, 就能安装这个最常用的 x11vnc 软件。
2)安装好后, 给 x11vnc 设置一个密码. 设置密码的过程就是在你的 Linux Terminal 输入下面这样, 然后它会提示你要输入你要的密码, 这个密码是用来连接 VNC 的时候, 登录用的.
$ x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /home/MrL/.vnc/passwd? [y]/n y
Password written to: /home/MrL/.vnc/passwd
3)设置好密码之后, 在你的 Linux terminal 中输入下面指令, 要求用密码形式来开启 VNC 的 server.
$ x11vnc -usepw
4)如果出现频繁跳出 x11vnc 的现象, 尝试在开启 x11vnc 的时候直接输入这个参数, 让它永远运行.
x11vnc -usepw -forever
或者
x11vnc -forever -shared -rfbauth ~/.vnc/passwd
- 设置工作站开机自启动 x11vnc
参见:《ubuntu18.04的x11VNC Server与windows的VNC Viewer的远程通讯及开机自启动配置》
https://blog.csdn.net/qq_40234479/article/details/110007052
其中,创建/etc/init/x11vnc.conf文件的方法:
sudo vim /etc/init/x11vnc.conf
复制内容后,esc,输入:wq 可以保存、退出
6)验证x11vnc服务
显示vnc监听状态:
sudo netstat -an | grep 5900
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN
tcp6 0 0 :::5900 :::* LISTEN
sudo netstat -nultp 这里是当前已使用的所有端口的情况:
sudo netstat -nultp
查看具体某个特定端口。例如查看上图中的22端口,输入命令
sudo netstat -anp |grep 22
具体含义为:LISTEN表示已经被占用,最后一列显示被占用的服务名称。
netstat -h可以显示参数含义帮助信息
2.2 客户端
- 甲乙丙个人电脑:作为客户端,windows10系统,采用的是tigervnc的客户端软件:vncviewer64-1.11.0.exe
(优点:不到30M,下载直接使用,免安装;缺点:视窗显示不全,需用滑动条) - 另一种是 realVNC的 VNC Viewer
下载:https://www.realvnc.com/en/connect/download/viewer/
2.3 远程登陆
- 在同一个局域网内(服务器与客户端电脑),由甲乙丙丁的客户端软件,输入服务器的IP地址和端口,执行连接,输入服务器端设置好的密码。例如:173.69.66.9:1 (其中,:1为x11vnc服务器启动后的端口号,如果服务器安装了多个vnc的server,须在服务器段确认x11vnc的端口号)
以下是查看安装的tigervnc的端口号:
username@host:~$ vncserver -list
TigerVNC server sessions:
X DISPLAY # PROCESS ID
:2 3663 (stale)
:3 4045 (stale)
:4 4647 (stale)
:5 27086 (stale)
:6 28570 (stale)
以下是查看安装的x11vnc的端口号:
The VNC desktop is: hostname:1
PORT=5901
3. 问题说明
3.1 单用户支持
X11vnc,网上说只支持单用户,也就是同一时刻只能有甲乙丙中的一人远程连接;其他人无法同时并行远程连接。
参见《ubuntu 16.04 部署vnc允许多用户同时连接》
https://pdf.us/2020/02/07/3859.html
支持unity图形界面的x11vnc 不支持多用户同时登录
由于ubuntu 16.04默认的桌面系统是采用unity的,其他vnc软件往往不支持
x11vnc依赖很小,支持unity桌面环境
缺点:x11vnc只支持单用户操作,不允许多用户同时使用,这还是因为x11vnc不会为远程控制的服务器创建额外的虚拟VNC桌面服务
3.2 客户端显示不全
服务器采用的是ubuntu18.04默认的gnome桌面系统,如果客户端是tigervnc的vncviewer(程序图标是一个老虎)。利用x11vnc远程连接时,客户端电脑上无法完全显示服务器的桌面,只能利用滑动条滑动。 即使采用ctrl+鼠标中键执行放大或缩小,只能放大或缩小字体,桌面视野是不变的,仍是局部视野,须用滑动键。尝试恰当设置vncviewer中的桌面分变率和尺寸,但没有解决,可能还没有找到设置方法,知道的请在评论告知。
作为一种替代方案,可以采用realVNC的客户端软件VNC viewer,可实现正常的桌面视窗显示。
3.3 VNC vs. Teamviewer
局域网下,用x11vnc是可以的,远程操作速度比较块和流畅。(尝试甲客户端电脑在公司的无线网下连接服务器失败)
广域网下,还是推荐用teamviewer。
3.4 windows客户端与远程ubuntu之间的复制黏贴问题
客户端与服务器连接后,客户端windows系统与vncviewer登陆的服务器之间无法实现文本和图片的复制粘贴,有知道的清在下面留言。
<<vnc viewer中开启剪切板复制内容到ubuntu系统中 >>
说明:本机是ubuntu16,安装的vnc server; vncviewer on Windows
最近经常使用vnc viewer远程打开ubuntu。却发现windows和ubuntu环境不可以相互复制黏贴。以下就是解决办法。在 X window system中,窗体之间传输数据,使用的是“selection”,也就是常说的“剪贴板”。 X window system中支持任意的selection. 其中,最重要的是PRIMARY selection,然后是CLIPBOARD selection,还有已经废弃的CUT_BUFFER(0~7).
在VNC中,服务器和客户端之间使用了CUT_BUFFER 0来传输数据.
而在X中,我们常用的对于字符串的“复制”和“粘贴”使用的是CLIPBOARD
selection.因此,为了让VNC的客户端和服务器之间能进行字符串的拷贝,我们需要将“CLIPBOARD”和“CUT_BUFFER 0”之间进行互相的拷贝.
第一种方案:
目前,我采用的autocutsel这个工具来完成这项任务,它能能够自动的完成“CLIPBOARD”和“CUT_BUFFER0”之间进行互相的拷贝.
该命令的格式如下:如果想让他以后台进程形式运行,填上-f参数即可。
> $ autocutsel -f
如果没有安装这个工具,会提示让你安装。
> sudo apt install autocutsel
接下来就可以在windows环境中复制内容,ctrl+v到ubuntu环境中了,也可以在ubuntu环境中复制内容,ctrl+v到windows环境中。wsj注:直接复制到终端有问题可以打开一个文本文件,复制到文件里。
注意:以上只适合于windows和ubuntu之间相互复制 黏贴英文字符,中文不行
第二种方案:
直接在ubuntu的terminal中输入vncconfig -nowin&,不要关闭terminal即可实现文字互相复制粘贴。未尝试,不确定效果如何
3.5 工作站服务器端外接显示器问题
工作站外接显示器且开启时,客户端vncviewer视图正常;一旦关闭工作站显示器电源,客户端vnc视窗显示卡顿、重影等,开启工作站显示器电源即回复正常。
以下帖子有解决思路,暂未尝试
《Ubuntu 16.04 x11vnc在无显示器的时候很卡的解决方法》
https://blog.csdn.net/bluewhalerobot/article/details/79147324
《x11vnc配置–ubuntu14.04》
https://www.cnblogs.com/elmaple/p/4354814.html