42

我刚刚升级到 MacOS Sierra,我意识到我似乎无法在终端中运行“ssh -X”命令​​了。它曾经启动 xterm 窗口,但现在好像我什至没有放 -X 选项了。在我更新之前它工作得非常好。除了从 OS X Yosemite 转到 MacOS Sierra 之外,我没有更改设置中的任何其他内容。

编辑:

正如所建议的,这是我在调试日志中发现的可能导致此问题的内容。

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
4

10 回答 10

66

我不需要重新安装 XQuartz,但是根据 Matt Widjaja 的回答,我想出了一个改进方案。

  • sudo vi /etc/ssh/ssh_config(这是 ssh 客户端配置,不是 sshd_config)
    • Host *条目下添加(或在每个主机的适当位置添加)
      • XAuthLocation /usr/X11/bin/xauth(xauth 的位置在 Sierra 发生了变化)
      • ServerAliveInterval 60(每 60 秒 ping 一次服务器以保持您的 ssh 连接处于活动状态)
      • ForwardX11Timeout 596h(允许超过 20 分钟默认值的不受信任的 X11 连接)

无需重新启动 ssh,当然,现有的 ssh 客户端连接除外。

听起来 -Y(受信任的 X11)比不受信任的更可取。如果您切换到受信任,则 ForwardX11Timeout 行可能会被删除。

ServerAliveInterval 行也是一个可选的首选项。

也可以在~/.ssh/config(用户的配置文件)中进行这些更改,但权限必须正确。

编辑:我删除了 ForwardX11 和 ForwardX11Trusted。它们不是必需的,并且 ForwardX11 的安全性较低,并且会导致 git(或其他使用 ssh 的工具)出现问题。

于 2016-10-03T15:26:07.123 回答
31

我注意到 macOS Sierra 重置了我的 X11 设置,因此它禁用了我的 xAuth 程序。要在 macOS Sierra 上重新启用 xAuth:

  1. 重新安装 X11/xQuartz 可能会重置 macOS Sierra 所做的任何更改。我也在下面进行了以下更改,尽管听起来这可能就足够了。
  2. 加载终端
  3. sudo <text editor of your choice> /etc/ssh/sshd_config
  4. 在该文件中,取消注释以下行,并将其设置为这些值:
    • X11Forwarding yes
    • X11DisplayOffset 10
    • [2017 年 7 月 10 日更新] 当你重新安装 X11/XQuartz 时,最重要的是,它应该添加一个:XAuthLocation <path_to_your_xauth>where mine was in /opt/X11/bin/xauth。这可能是解释为什么重新安装有效的黄金步骤。
  5. 通过终端重新启动 ssh。我通过运行来做到这一点:
    • sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    • sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
于 2016-09-25T22:53:17.740 回答
13

-X升级到 Mac OS X Sierra 后,我在使用 X11 转发选项时遇到了同样的问题。

查看 ssh 选项-Y(受信任的 X11 转发)。在使用ssh -Y <host>对我有用的东西时。

于 2016-09-23T07:30:58.157 回答
10

这是一个老问题,但我最近在运行 10.12.6 的 Mac 上遇到了同样的问题。该DISPLAY变量未在终端中设置并且ssh -X不起作用。这就是我解决问题的方法:

  1. 使用 Homebrew 重新安装 XQuartz:( 可能需要brew cask install xquartz该选项)--forced

  2. 将 XQuartz 启动器添加到系统默认值(遵循此Reddit 帖子中的解决方案: launchctl load -w /Library/LaunchAgents/org.macosforge.xquartz.startx.plist

  3. 重新启动系统。

完成这些之后,我的DISPLAY变量设置正确:

$ echo $DISPLAY /private/tmp/com.apple.launchd.mfXFpzZ0gC/org.macosforge.xquartz:0

ssh 中的 X11 转发也可以。

于 2018-12-12T20:03:23.977 回答
5

只需将一行添加XAuthLocation /usr/X11/bin/xauth/etc/ssh/ssh_config运行 MacOS Sierra 的 Mac 上,即可通过 ssh 连接到 Linux 主机,并能够远程运行 X Windows 程序并让它们在我的 Mac 上的 XQuartz 下显示。

于 2016-10-11T13:34:32.153 回答
5

我对此的解决方案如下。

(1)xquartz在尝试之前启动ssh -X。在 xquartz 选项中,我只是启用了“登录时打开”,然后它总是在后台运行。

(2) 转到“xquartz首选项”菜单,在“安全”窗口中,单击“允许来自客户端的连接”框。

做完这些事情后,一切正常。

于 2017-05-05T14:47:19.837 回答
3

Just upgraded my macbook from El Capitan to Sierra. Simply reinstalling Xquartz has done the trick for me, using ssh -X [linux server]

于 2016-11-25T09:30:45.127 回答
1

我花了一整天时间寻找解决方案才意识到最近的 Sierra 没有安装 XQuartz https://support.apple.com/en-gb/HT201341。安装后(https://www.xquartz.org/)一切正常。

于 2017-09-02T18:22:12.653 回答
1

如果安装了 Quartz,只需在 /etc/ssh/ssh_config 文件的“Host *”下添加“X11Trusted yes”行。

于 2017-12-01T16:38:33.950 回答
0

重新启动 XQuartz 对我有用。

于 2018-09-20T03:03:16.443 回答