无法在MacOS Sierra上运行"ssh -X"

Dod*_*die 29 ssh terminal xterm macos-sierra

我刚刚升级到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
Run Code Online (Sandbox Code Playgroud)

Chr*_*ian 47

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

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

除了现有的ssh客户端连接之外,无需重启ssh.

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

ServerAliveInterval行也是可选的首选项.

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

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


Mat*_*aja 27

我注意到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年10月10日]当您重新安装X11/XQuartz时,首先应该添加:XAuthLocation <path_to_your_xauth>我的位于/ opt/X11/bin/xauth中.这可能是解释为什么重新安装工作的黄金步骤.
  5. 通过终端重启ssh.我这样做是通过运行:
    • sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    • sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

  • 重新安装XQuartz终于使它工作了!我没有想到尝试,因为我在等待新版本的XQuartz.谢谢! (3认同)
  • 我认为Matt对所需XAuthLocation的观察是关键.我只打开X11Forwarding(显示偏移默认为10,所以我没有设置),X仍然无法正常工作,但是一旦我设置XAuthLocation,我现在可以在我的mini上使用X11了.@MattWidjaja你得到额外的奖励积分,包括在OSX上重置sshd的说明 - 谢谢! (3认同)
  • `/System/Library/LaunchDaemons/ssh.plist:找不到指定的服务` (3认同)

小智 11

-X在升级到Mac OS X Sierra之后,我遇到了与X11转发相同的问题.

看一下ssh选项-Y(可信的X11转发).使用的ssh -Y <host>东西对我有用.


小智 5

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


小智 5

我对此的解决方案如下。

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

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

完成这些操作后,一切正常。


小智 5

这是一个老问题,但是我最近在运行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转发也可以。

  • `brew 安装 --cask xquartz` (2认同)