Windows 远程登录服务器后,由于是使用终端远程登录,并且远程服务器没有图形界面,显示图像很不方便。本文记录使用 Xming Xshell 6 实现远程打开Linux界面的方法。
基本环境
- 本地电脑系统:window10
- 远程服务器系统:Ubuntu16.04
实现思路
- 服务器没有图形界面,但是相应显示的信息事实上是可以生成的,需要使用X11将该显示转发到其他可以显示的计算机,再由该计算机进行显示。
- X 协议由 X server 和 X client 组成(这里X server对应本地电脑,X Client对应服务器):
- X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知 X client。
- X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。
举个例子,如果用户点击了鼠标左键,因为鼠标归 X server 管理,于是 X server 就捕捉到了鼠标点击这个动作,然后它将这个动作告诉 X client,因为 X client 负责程序逻辑,于是 X client 就根据程序预先设定的逻辑(例如画一个圆),告诉 X server 说:“请在鼠标点击的位置,画一个圆”。最后,X server 就响应 X client 的请求,在鼠标点击的位置,绘制并显示出一个圆。
工具下载安装与配置
- Xming 可以去下载免费版:https://xming.en.softonic.com/download
- Xshell 6个人免费版:https://www.netsarang.com/download/free_license.html
XMing安装
- –> Mutiple windows
需要记住安装时的display number 为 0。
- –> Start no client
- –>Clipbard
建议勾选一个
no access control
可能会方便一些
- –> 完成
XMing配置
代码语言:javascript复制这时还要设置IP充许,如果不设IP充许,将会被Xming拒绝而打不开:首先打开Xming安装文件夹找到 X*.hosts 文件(*号为上面Display Number 数字),如本例就是找到X0.hosts文件,打开并在localhost下面一行,添加Linux服务器的IP地址。
localhost
192.168.10.2
192.168.10.3
192.168.10.4
此处填需要被远程登录的服务器地址。
Xshell 6 安装
没啥可说的,装就完了。
Xshell 6 配置
- 设置用户身份认证,账号密码、ssh key都可以的
- 再SSH --> 隧道选项卡里设置
转发X11连接到
:X DISPLAY
:
localhost:0.0
此处的 0.0 可以设置为其他,记录下来和服务器端配置相当即可
远程配置
- X shell 登录远程服务器
- 设置DISPLAY:
export DISPLAY=本机IP地址:0.0
本机IP为当前使用的计算机, 0.0 对应在X shell 中转发的 0.0
- 建议将该设置添加到
~/.bashrc
文件中
测试
此时可以用显示图形的应用测试是否配置成功,此处使用 xclock, xterm进行测试
- 安装 x11-apps
apt-get install x11-apps
# 或
yum install xorg-x11-apps*
- 运行
xclock
- 安装 xterm
apt-get install xterm
- 显示上述界面说明图形界面转发成功
- 如果报错可以尝试安装图形界再面试一下
apt-get install xserver-xorg x11-xserver-utils
参考资料
- https://blog.csdn.net/akuoma/article/details/82182913
- https://blog.csdn.net/lmyclever/article/details/7422243
- https://blog.csdn.net/Dteam_f/article/details/109806294?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=4df63aa8-dedc-4bc9-a1af-5a4e70f6924d&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control