概述

Oracle Linux 7虚机,宿主机为Windows。上面已安装数据库软件,尚未创建数据。
主机通过vagrant box提供,最初只有字符界面,希望能通过GUI调用dbca。

配置

目标主机配置

本例中,目标主机就是Linux 虚机。
设置/etc/ssh/sshd_config文件中的X11UseLocalhost设置为no:

X11UseLocalhost no

重启sshd服务:

# systemctl restart sshd
或者
# service sshd restart

当然也可以检查设置是否生效:

# sshd -T|grep -i x11
x11displayoffset 10
x11maxdisplays 1000
x11forwarding yes
x11uselocalhost no

安装xauth和xterm,后者是测试用的:

yum -y install xauth xterm

客户端配置

安装X Server软件

客户端在本例中就是Windows主机。客户端需要安装X Server。
可以是Xming或Cygwin/X,本例使用前者。
软件下载和过程略,参考文末的文档即可。

安装完成后,运行XLaunch。
在这里插入图片描述

配置Putty SSH会话

下载并安装putty。
启用X11 Forwarding:
在这里插入图片描述
实际呢,我没有用这个。我用的是命令行,命令行只需指定-X:

D:\vagrant-boxes\OracleLinux\7>vagrant putty -p -- -l oracle -X
getting Proxy Configuration from Host...

这里一定要用数据库用户直接登录(-l oracle),不要通过其它用户su或切换。

说明:

以上命令中的-p选项为使用口令登录,因此我在服务器端开启了口令认证,即在文件中设置PasswordAuthentication 为yes。在生产环境中还是建议SSH登录。

# grep PasswordAuthentication /etc/ssh/sshd_config
PasswordAuthentication yes
# sudo systemctl restart sshd

如果X11 Forwarding设置成功,登录后可以看到DISPLAY变量已设置:

Using username "oracle".
Server refused our key
oracle@127.0.0.1's password:
Last login: Thu Sep  5 07:10:40 2019 from 10.0.2.2

Welcome to Oracle Linux Server release 7.6 (GNU/Linux 4.14.35-1844.4.5.el7uek.x8                                                                              6_64)

The Oracle Linux End-User License Agreement can be viewed here:

    * /usr/share/eula/eula.en_US

For additional packages, updates, documentation and community help, see:

    * http://yum.oracle.com/

/usr/bin/xauth:  file /home/oracle/.Xauthority does not exist
[oracle@ol7-vagrant ~]$ echo $DISPLAY
127.0.0.1:10.0

为何DISPLAY从10开始? 是X11DisplayOffset 设定的。
测试:

[oracle@ol7-vagrant ~]$ xterm &
[1] 6654

看到以下界面就成功了:
在这里插入图片描述
X Forwarding走的是SSH的22端口,因此不需额外的防火墙设置。

补充

如果用git bash作为客户端,需要设置如下:

export DISPLAY=localhost:0.0
ssh -XY -v user@remote_server

然后在远端主机的DISPLAY才会正确的设置, 然后图形化程序运行正常:

$ echo $DISPLAY
10.0.0.5:10.0
$ xterm

参考

  1. Running Graphical Applications Securely on Oracle Cloud Infrastructure
  2. SSH onto Vagrant Box With Different Username
  3. https://unix.stackexchange.com/questions/50698/fastest-remote-x-from-windows
  4. https://superuser.com/questions/1217280/why-is-x11-forwarding-so-inefficient
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐