当从 WSL1 迁移到 WSL2 时,很多事情都会发生变化;显然这也适用于 X11 转发。
为了在 Windows 10 上使用 WSL2 的 X11 转发,我需要采取哪些步骤,就像我在 WSL1 上所做的那样?
x11 x11-forwarding windows-10 windows-subsystem-for-linux wsl-2
我需要使用 SSH 在虚拟机上远程运行 Google Chrome。我不想要 xforwarding - 我想利用虚拟机上可用的 GPU。当我尝试运行时,出现 google-chrome
以下错误:
[19615:19615:0219/152933.751028:ERROR:browser_main_loop.cc(1512)] Unable to open X display.
Run Code Online (Sandbox Code Playgroud)
我试图将我的 DISPLAY env 值设置为各种值:
export DISPLAY=localhost:0.0
export DISPLAY=127.0.0.1:0.0
export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)
我还尝试用不同的值替换 abowe 示例中的 0.0 。
我ForwardX11 no
在 /etc/ssh/sshd_config 中尝试设置这样的目标:
systemctl isolate multi-user.target
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时,sudo lshw -C display
我得到以下输出:
*-display
description: VGA compatible controller
product: Hyper-V virtual VGA
vendor: Microsoft Corporation
physical id: 8
bus info: pci@0000:00:08.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: vga_controller bus_master rom
configuration: driver=hyperv_fb latency=0
resources: …
Run Code Online (Sandbox Code Playgroud) 如果没有Docker容器,可以直接使用SSH X11转发(ssh -X)在远程服务器上运行X11程序.当应用程序在服务器上的Docker容器内运行时,我试图让同样的东西工作.当使用-X选项SSH连接到服务器时,会设置X11隧道,并且环境变量"$ DISPLAY"会自动设置为"localhost:10.0"或类似内容.如果我只是尝试在Docker中运行X应用程序,我会收到此错误:
Error: GDK_BACKEND does not match available displays
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是实际将$ DISPLAY传递给容器,其中包含"-e"选项,如下所示:
docker run -ti -e DISPLAY=$DISPLAY name_of_docker_image
Run Code Online (Sandbox Code Playgroud)
这有帮助,但它没有解决问题.错误消息更改为:
Unable to init server: Broadway display type not supported: localhost:10.0
Error: cannot open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)
在搜索网络后,我发现我可以做一些xauth魔术来修复身份验证.我添加了以下内容:
SOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
chmod 777 $XAUTH
docker run -ti -e DISPLAY=$DISPLAY -v $XSOCK:$XSOCK -v $XAUTH:$XAUTH \
-e XAUTHORITY=$XAUTH name_of_docker_image
Run Code Online (Sandbox Code Playgroud)
但是,这仅在将" --net host " 添加到docker命令时才有效:
docker run …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过PyCharm SSH终端启用X11转发,这可以通过执行
"Tools -> Start SSH session..."
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎没有办法像我在shell中那样指定标志来启用X11 Forwarding:
ssh -X user@remotehost
Run Code Online (Sandbox Code Playgroud)
你知道一些聪明的方法吗?
我发现唯一的脏黑客是用X11转发打开外部ssh连接,而不是手动更新环境变量DISPLAY.
例如,我可以在我的外部ssh会话上运行:
vincenzo@remotehost:$ echo $DISPLAY
localhost:10.0
Run Code Online (Sandbox Code Playgroud)
而不是在我的PyCharm终端上设置:
export DISPLAY=localhost:10.0
Run Code Online (Sandbox Code Playgroud)
如果我想从GUI运行程序,请更新运行/调试配置中的DISPLAY变量.
但是,我真的不喜欢使用外部ssh终端并手动更新DISPLAY变量的解决方案,我确信有更好的方法来实现这一点!
任何帮助将非常感激.
Ps制作别名:
alias ssh='ssh -X'
Run Code Online (Sandbox Code Playgroud)
在我的.bashrc中没有强制PyCharm启用X11转发.
我正在尝试运行一个命令paramiko
,应该能够打开一个X窗口.我正在使用的脚本如下:
import paramiko
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect('192.168.122.55', username='user', password='password')
transport = ssh_client.get_transport()
session = transport.open_session()
session.request_x11()
stdin = session.makefile('wb')
stdout = session.makefile('rb')
stderr = session.makefile_stderr('rb')
session.exec_command('env; xterm')
transport.accept()
print 'Exit status:', session.recv_exit_status()
print 'stdout:\n{}'.format(stdout.read())
print 'stderr:\n{}'.format(stderr.read())
session.close()
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我运行上面的脚本时,我得到了这个输出:
Exit status: 1
stdout:
SHELL=/bin/bash
XDG_SESSION_COOKIE=8025e1ba5e6c47be0d2f3ad6504a25ee-1347286654.617967-1932974971
SSH_CLIENT=192.168.122.1 58654 22
USER=user
MAIL=/var/mail/user
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/user
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/user
LOGNAME=user
SSH_CONNECTION=192.168.122.1 58654 192.168.122.55 22
DISPLAY=localhost:10.0
_=/usr/bin/env
stderr:
xterm: Xt error: Can't open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)
如果我在终端中运行以下命令:
ssh -X user@192.168.122.55 'env; xterm'
Run Code Online (Sandbox Code Playgroud)
然后我得到相同的环境变量(虽然有些端口发生了变化),所以我说我的环境是正确的.但是,我仍然缺少一些可以paramiko …
我一直试图从我的笔记本电脑上运行X11端口转发工作.我无法弄清楚为什么它不起作用.
当我尝试运行xterm时收到此消息:
X11 connection rejected because of wrong authentication.
xterm Xt error: Can't open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)
我不知道这是否相关,但是当我登录时,我收到此消息:
/usr/bin/xauth: timeout in locking authority file /home/sphillips/.Xauthority
Run Code Online (Sandbox Code Playgroud)
我想知道问题是我的笔记本电脑上的本地用户是skp还是这台服务器上的用户名是sphillips.我已经能够使用X11转发与我使用相同skp登录的其他计算机一起工作.
此外,X11端口转发从使用Xming和Putty的Windows机器到同一服务器.我必须手动将DISPLAY变量配置为IP地址并显示0.0,但它可以工作.
我在我的机器上运行了一个xhost +,试图绕过任何安全问题.那还是行不通的.
在服务器上,我检查配置:
$ sudo grep X11Forwarding /etc/ssh/sshd_config
#X11Forwarding no
X11Forwarding yes
# X11Forwarding no
Run Code Online (Sandbox Code Playgroud)
在我的机器上:
$ sudo grep X11Forwarding /etc/ssh/sshd_config
[sudo] password for skp:
#X11Forwarding no
X11Forwarding yes
# X11Forwarding no
Run Code Online (Sandbox Code Playgroud)
我的服务器是RedHat Enterprise Linux 6,我的笔记本电脑是Fedora 15.
任何人都可以给我任何想法,试图让我的笔记本电脑上的SSH X11转发工作吗?
我在Windows7机器上,我试图让firefox在centOS机器上打开,但是显示在我当前的屏幕上.firefox
在终端中输入时,我收到以下错误:
Error: cannot open display: localhost:0.0
Run Code Online (Sandbox Code Playgroud)
为了设置显示器,我使用了命令
$ export DISPLAY=localhost:0.0
Run Code Online (Sandbox Code Playgroud)
有些网站建议使用以下内容,但它也不起作用:
$ export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)
我正在使用PuTTY,我Enable X11 forwarding
选中了复选框,XMing正在Windows上运行.此外,centOS文件上的sshd_config似乎也正确设置:
$ cat /etc/ssh/sshd_config |grep -i x11
#X11Forwarding no
X11Forwarding yes
#X11DisplayOffset 10
X11UseLocalhost yes
Run Code Online (Sandbox Code Playgroud)
我查看了很多页面并搜索了StackOverflow,但没有一个能够以任何方式帮助我.先感谢您.
我试图让XQuartz在OSX上工作,所以我可以通过Docker进行X11转发.我按照这里的说明操作.我相信我的问题可以仅通过第一部分来回答,但为了以防万一(为了避免XY问题),我也提供了第二部分.
我已经通过自制软件安装了它brew cask install xquartz
.然后我open -a XQuartz
开始吧.
测试它,如果我尝试打开它xterm
,它不起作用:
MacBook-Pro:opencv-gui csaftoiu$ xterm
xterm: Xt error: Can't open display: /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
Run Code Online (Sandbox Code Playgroud)
但是,伪文件存在:
MacBook-Pro:opencv-gui csaftoiu$ echo $DISPLAY
/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
MacBook-Pro:opencv-gui csaftoiu$ ls -alh $DISPLAY
srw-rw-rw- 1 csaftoiu wheel 0B May 6 21:12 /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
Run Code Online (Sandbox Code Playgroud)
我可以通过XQuartz打开一个xterm.然后:
bash-3.2$ echo $DISPLAY
:0
Run Code Online (Sandbox Code Playgroud)
此值也适用于常规OSX:
$ DISPLAY=:0 xterm
# opens xterm, waits for it to finish
$
Run Code Online (Sandbox Code Playgroud)
以下不起作用,不知道为什么基于这里的答案:
xterm: Xt error: Can't open display: localhost:0
MacBook-Pro:opencv-gui …
Run Code Online (Sandbox Code Playgroud) 我使用 Windows VS 代码和此扩展“远程 SSH”、“远程 X11”、“远程 X11 (SSH)”来连接远程服务器并从远程服务器获取图形。
我运行 VcXsrv、Pageant。如果我直接连接 Pageant,X11 转发就可以工作。如果我在远程服务器中设置“export DISPLAY=localhost:10.0”,它甚至可以在 VS code 终端中工作。因此,除了 Remote X11 之外,所有功能都有效,它无法设置 DISPLAY 变量,并显示以下日志: Failed to get DISPLAY: Error: Invalid cygwin unix socket path
windows remote-server x11-forwarding visual-studio-code vscode-extensions
我正在使用 MobaXTerm 连接到远程机器,因此使用其 x11 转发来使用图形应用程序。
然而,尽管我的所有语言环境都设置得很好(法国),但与 X 服务器一起使用的所有应用程序都使用 qwerty 布局。