快速解答问题
- 在主机上,不要
DISPLAY=
在此处放置任何语句。如果存在,远程主机将尝试在其自己的显示端口上呈现 GUI; - 在客户端机器上,请
export DISPLAY=127.0.0.1:0.0
在 中 指定~/.bashrc
。此DISPLAY
变量应与Xming
客户端机器上运行的 匹配。
然后,只需使用标志连接到主机-X
,即可免费访问远程机器上的所有 GUI 程序!
下面的冗长的描述中出了什么问题:
- 正如其中一条评论所澄清的那样,不应
DISPLAY
在远程主机上设置变量。这样做有点过分,因为它会混淆 GUI 的呈现方式。- 删除
DISPLAY
在主机上设置变量的行解决了我的问题。
- 删除
我已通过在中指定以下内容将 Linux Mint 机器设置为拾取 X11Forwarding /etc/ssh/sshd_config
,但是,我无法使用在 Windows 10 上作为 WSL 托管的 Ubuntu 18.04.1 LTS 访问服务器。
X11Forwarding yes
X11UseLocalhost no
AllowAgentForwarding yes
X11DisplayOffset 10
AddressFamily inet
但是,使用 登录到 Linux Mint 机器后,我无法启动任何具有 GUI 的程序。在 SSH 会话期间ssh -Y address_of_remote_server
尝试启动时出现以下错误消息:gvim
但是,我可以gvim
通过组合命令来启动,如下所示:ssh -Y address_of_remote_server gvim
。没有提示任何错误。请告知需要调整哪些设置来帮助我打开 GUI 程序期间SSH 会话。
更多细节:
- 在本地机器上,我使用在 Windows 10 上安装为 WSL 的 Ubuntu 发行版。
- 对于 X-server,我尝试了 Xming 和 X410。两者都可以通过显示端口托管(本地)GUI 程序:(
127.0.0.1:0.0
远程机器上的设置也是如此。)
- 对于 X-server,我尝试了 Xming 和 X410。两者都可以通过显示端口托管(本地)GUI 程序:(
- 在远程 Linux Mint 机器上,我
export DISPLAY=127.0.0.1:0.0
也进行了设置;ssh + command (gvim)
如果没有该部件,它就无法工作127.0.0.1
。
更新,带-X
标志
我应该选择使用 flag 来展示演示。在我的例子中,使用和-X
连接 SSH 连接是相同的。它们都设置了变量:
-X
-Y
$DISPLAY
类似地,将连接语句与gvim
命令结合起来,我得到了一个生动的 Gvim 窗口。而且,我先连接,然后发出gvim
命令,却得到了以下错误:
客户端设置更新
在客户端机器上~/.ssh/config
,我已经设置了:
host 10.0.0.168
ForwardX11 yes
Port 22990 #This is a fake port.
User llinfeng
PubKeyAuthentication yes
IdentitiesOnly yes
IdentityFile ~/.ssh/MyRSA_Key
但是,进入 SSH 会话后,我无法启动任何 GUI 程序。同样,启动组合命令确实会产生一个功能齐全的 GUI(ssh -X 10.0.0.168 gvim
将创建一个 GVIM 窗口)。
答案1
X11Forwarding
您不能通过在任何文件中放置条目来强制客户端启用sshd_config
,而是需要ForwardX11
在客户端计算机上启用,并且ssh
不是 sshd
. X11Forwarding
需要在服务器上启用,但这并不意味着它是强制执行的。
您可以通过编辑~/.ssh/config
用户并为远程服务器添加主机条目来执行此操作:
Host theserver
Hostname 192.168.1.1
User username
ForwardX11 yes
PubKeyAuthentication yes
IdentityFile ~/.ssh/some_key
IdentitiesOnly yes
现在您可以运行$ ssh theserver
并ForwardX11
处于活动状态。使用-X/-Y
标志时,您将ForwardX11
在客户端上激活,与设置配置相同。无论哪种方式,您都需要ForwardX11
在客户端上启用,并且它是不是建议对整个系统内的所有主机都执行此操作,而不是有选择地对每个主机执行此操作。
不要乱动,DISPLAY
并允许你的客户端和系统设置一切。你可能试图修复一些东西并添加了它,但删除它并尝试简单地使用-X
/-Y
标志,或为特定主机配置 X11 转发,或在运行时使用标志。
您可以阅读有关 X11 转发的安全隐患的更多信息这里以及其他地方。
答案2
答案很简单,只需使用 -X 标志进行连接即可:
ssh -X me@myserver
这应该会为您设置适当的显示变量。您可以看到该值如下:
echo $DISPLAY
当我 ssh 进入我的主机时,我得到了 DISPLAY 的这个值:
localhost:10.0
您的服务器配置文件中的内容可能比您需要的多。我的配置文件中只有以下内容:
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
尝试将您的 ssh 配置文件精简为这些简单值。
此外,-p 22 是不必要的,因为端口 22 是 ssh 的默认端口。
这里有更多信息:Stack Exchange:转发 X
最后,可以从手册页中学到很多东西:
man ssh