我想在连接到 Jetson Xavier nx 的 macOS 上启用 x11 转发。但是,连接后:
sudo ssh -Xvvv id@host
连接建立成功。但在详细日志中,我得到以下信息:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
debug3: receive packet: type 52
debug1: Authentication succeeded (password).
Authenticated to proto1 ([192.168.1.106]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: exec
debug3: receive packet: type 80
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug3: receive packet: type 91
debug2: channel_input_open_confirmation: channel 0: callback start
debug1: X11 forwarding requested but DISPLAY not set
debug2: fd 4 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x48
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug3: send packet: type 98
debug1: Sending environment.
debug3: Ignored env TERM
debug3: Ignored env SSH_AUTH_SOCK
debug3: Ignored env PATH
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug3: send packet: type 98
debug3: Ignored env HOME
debug3: Ignored env MAIL
debug3: Ignored env LOGNAME
debug3: Ignored env USER
debug3: Ignored env SHELL
debug3: Ignored env SUDO_COMMAND
debug3: Ignored env SUDO_USER
debug3: Ignored env SUDO_UID
debug3: Ignored env SUDO_GID
debug3: Ignored env __CF_USER_TEXT_ENCODING
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
X11 forwarding requested but DISPLAY not set
为了使 X11 转发正常工作,必须在连接时设置 DISPLAY 变量。像这样手动设置显示:
export DISPLAY=http://localhost:22
也不起作用。如何启用X11转发?
我在尝试将 X11 转发到 XQuartz 时遇到了同样的问题。我相信当你从 Mac 进行 ssh 时,如果 Mac 终端中的 DISPLAY 没有设置,那么 ssh 客户端不知道将 X11 流量转发到哪里。所以我就这么做了:
DISPLAY=:0
在 Mac 终端中,然后
ssh -X
就成功了。
嗯,那里绝对不应该有
http://
,我认为你的 :22
来自 SSH 端口,而不是你应该使用的 X11 显示号码。您在本地计算机上的显示几乎总是 :0.0
,如果您在计算机上 echo $DISPLAY
时还没有看到这一点,则可能存在问题。
首先确保您可以在 Mac 上单独运行 X11 应用程序。您可能需要安装XQuartz。
尝试在没有
sudo
的情况下运行;也许 root 不允许在 Mac 上与您的 X11 通信。另外,也许可以在 ssh -X
窗口中尝试 xterm
(当您手动打开 XQuartz 时,该窗口应该打开,或者可以从其菜单启动),以确保它选择正确的显示。
我之前也遇到过同样的问题。原来我的Mac上没有安装X11转发包。所以请确保您通过brew安装了XQuartz:
brew install xquartz --cask
(请注意,当您的 Mac 上未安装 xquartz 时,错误消息可能与您的错误消息类似,因此请先检查您的本地计算机。)
然后确保您有
export DISPLAY=:0
,或者您可以通过$DISPLAY
检查echo $DISPLAY
。之后,通过使用详细ssh -v -X user@host
,您应该找到如下调试消息:
debug1: Requesting X11 forwarding with authentication spoofing.
这对我有用。虽然
eog
命令稍后显示速度较慢。
我按照上面的Scott's说明并从自制程序安装了xquartz:
brew install xquartz
然后我尝试根据 Sasha 的回答设置
DISPLAY=:0
。
不幸的是,执行上述两个步骤不足以将您的 Mac 配置为从主机接收 X11。您还需要重置计算机以将
DISPLAY
设置为全局环境变量。
您可以通过运行
printenv DISPLAY
来测试这一点。安装 xquartz 并重新启动计算机后,它应该看起来像这样:
$ printenv DISPLAY
/private/tmp/com.apple.launchd.XJa3QdBpuk/org.xquartz:0